curl / Mailing Lists / curl-library / Single Mail


Re: Time to disable "Expect: 100-continue" by default?

From: Stefan Eissing <>
Date: Thu, 6 Jul 2017 10:59:18 +0200

Was with Daniel von Twitter, but the discussion is better placed here.

In my mind, the 100-continue serves 2 purposes:

1) it protects the HTTP/1.1 connection. E.g. the server, sending a 4xx response, either has to read all the bytes from the client or close the connection early. Which has also other disadvantages.

2) it protects the client so that there is reasonable chance that the request succeeds. If the client is unable to resend the data, its request would fail otherwise.

This was a good protocol invention in HTTP/1.1, but as you know, there is stupid server software out there that does not care about this. Re the current workaround with 1sec timeout.

I argue that in HTTP/2, the part 2) still applies, while 1) is is addresses by stream close/RST. For 2) alone the servers really need to implement Expect: headers correctly. And clients should expect a correct implementation.

So. What about curl? As long as the request is repeatable, send the data right away. But does libcurl right now know when request data is repeatable or not? Here, my experience is limited. CURLOPT_READDATA does not specify, right? So, for libcurl users, the proposed change could cause breakage.


Received on 2017-07-06