On 12/18/2012 08:33 PM, Eivind Sarto wrote: > I was was having problems receiving data from a client using POST with > chunked encoding. > It turns out this client is violating the HTTP spec by setting the > "Transfer-Encoding: Chunked" > as well as "Content-Length: 0" > > Here are the client headers: > POST /ee4/live.isml/Streams(Encoder1) HTTP/1.1 > Transfer-Encoding: Chunked > User-Agent: ExpressionEncoder > Host: 10.11.1.29 > Content-Length: 0 > Connection: Keep-Alive > Cache-Control: no-cache > > This is what HTTP 1.1 spec says (in section 4.4): > Messages MUST NOT include both a Content-Length header field and a > non-identity transfer-coding. If the message does include > a non- identity transfer-coding, the Content-Length MUST be ignored. > > libmicrohttpd does the opposite of what the 4.4 section says if both headers > are present. It only uses the content-length and ignores the > chunked encoding. > I patched libmicrohttpd with the attached patch that does the opposite. It > ignores the content-length if chunked encoding is also specified. > And with that patch libmicrohttpd can be a publishing point for MS Expression > Encoder. > > What is your take on this?
This one is easy. We should follow the spec! ;-) => in SVN 25536, patched as suggested (and #MHD_VERSION bumped to 0x91702). Now, one could possibly convince me that if MHD_USE_PEDANTIC_CHECKS is set, we should instead generate a hard error. If you want this to be able to easily test for such bad clients, I'm open for it. Happy hacking! Christian
