Integrated: 8286171: HttpClient/2 : Expect:100-Continue blocks indefinitely when response is not 100

Conor Cleary ccleary at openjdk.java.net
Thu Jun 9 15:06:53 UTC 2022


On Wed, 8 Jun 2022 18:29:10 GMT, Conor Cleary <ccleary at openjdk.org> wrote:

> **Issue**
> It was observed that when the httpclient sends a POST request with the `Expect: 100 Continue` header set and the server replies with a response code `417 Expectation Failed` that the httpclient hangs indefinitely when the version of Http used is HTTP/2. However, it was also seen that the issue persisted with HTTP/1_1 with the same usage.
> 
> This was caused by an implementation in ExchangeImpl that resulted in two calls to readBodyAsync() in this case, where the second call causes the indefinite hanging (as if there was a respomse body, it has already been read).
> 
> **Solution**
> When ExchangeImpl::expectContinue() detects that a response code 417 is received, two things occur. Firstly, a flag is set which ensures that the connection is closed locally in this case. Secondly, the response is returned to the client as a failed future, A unit test was added to ensure that this usage of the httpclient does not cause hanging.

This pull request has now been integrated.

Changeset: 26714431
Author:    Conor Cleary <ccleary at openjdk.org>
Committer: Daniel Fuchs <dfuchs at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/267144311c96109421b897b359c155a963661d31
Stats:     329 lines in 6 files changed: 326 ins; 0 del; 3 mod

8286171: HttpClient/2 : Expect:100-Continue blocks indefinitely when response is not 100

Reviewed-by: dfuchs, jpai

-------------

PR: https://git.openjdk.org/jdk/pull/9093


More information about the net-dev mailing list