On Sun, 12 Jan 2014, Cédric Deltheil wrote:

I compared what happens with an HTTP PUT request if the caller forgot to set the expected size via `CURLOPT_INFILESIZE`: in that case, the Content-Length header is omitted (and thus libcurl does not send any negative Content-Length).

Ah yes. Since PUT already works like that, I think it is a good reason for us to make POST do the same!

In other words, this means the HTTP PUT[1] and HTTP POST[2] behaviors are different.

There's really no good reason for that.

The Content-Length is explicitly set to 0 by libcurl during the auth negotiation (i.e before the final request). Here again the behavior between PUT and POST are different:

* for HTTP POST, libcurl force a Content-Length: 0 even though the caller has set its own Content-Length header,

* this is not the case for HTTP PUT (i.e. if a user-defined Content-Length header exists, it is set even at auth negotiation time).

I think that should be considered a bug in the PUT logic, as I'm sure it will seriously confuse servers if we announce a length and then don't actually send that body.

--

 / daniel.haxx.se
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to