cURL / Mailing Lists / curl-library / Single Mail


Re: HTTP POST: fail early if unknown data size (read function)

From: Daniel Stenberg <>
Date: Mon, 13 Jan 2014 16:08:30 +0100 (CET)

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.


List admin:
Received on 2014-01-13