aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-12-24 15:33:05 +0100
committerChristian Grothoff <christian@grothoff.org>2019-12-24 15:33:05 +0100
commitf5d59eb3a7c54cd13550ed906a67f1bff630b2c6 (patch)
tree015b7ea665c413d4932de3bcfb799f7efa7312cd /ChangeLog
parent878c8c7e019b95aaace6a4a9edf1e584abc5ceae (diff)
downloadlibmicrohttpd-f5d59eb3a7c54cd13550ed906a67f1bff630b2c6.tar.gz
libmicrohttpd-f5d59eb3a7c54cd13550ed906a67f1bff630b2c6.zip
Given post body "a&b=1", how should MHD interpret the data?
I'm at the end of a long investigation and it's come down to that question for post_process_urlencoded() in MHD. MHD currently calls back with ("a&b", "1"). The app I'm working breaks when it doesn't receive a callback for "b". The http client in this case (that did the urlencoding) is google-http-java-client 1.23.0. The client behavior may be questionable, but MHD's behavior doesn't seem right either. Isn't there some principle, "clients should strive for conformance, servers should strive for forgiveness". I've attached a patch to MHD to add a failing test, but without a fix. As for relevant standards, the W3C[1] is not detailed enough to cover it. The WhatWG[2] is more specific and allows for empty values and even empty keys. I'd like to callout uriparser[3], another C library I've patched in as a work-around. Uriparser documents their handling of these cases well: * NULL in the value member means there was no '=' in the item text as with "?abc&def". * An empty string in the value member means there was '=' in the item as with "?abc=&def". [1] https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 [2] https://url.spec.whatwg.org/#urlencoded-parsing [3] https://uriparser.github.io/doc/api/latest/#querystrings commit aa0534af56d135e1b261d127af09c22015c1ff87 Author: Ethan Tuttle <ethan@ethantuttle.com> Date: Tue Dec 24 03:50:59 2019 -0800 urlencoding post-processor: add failing tests for keys without values
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog4
1 files changed, 4 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ee64b3af..6118da9b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
1Tue 24 Dec 2019 03:32:18 PM CET
2 Adding patch from Ethan Tuttle with test case for urlencoding
3 in post-processor for keys without values. -CG/ET
4
1Sun 15 Dec 2019 02:12:02 PM CET 5Sun 15 Dec 2019 02:12:02 PM CET
2 Fix send() call (affects Mac OS X). #5977 -CG/fbrault 6 Fix send() call (affects Mac OS X). #5977 -CG/fbrault
3 Releasing libmicrohttpd 0.9.69. -CG 7 Releasing libmicrohttpd 0.9.69. -CG