On Wed, 8 Jun 2022 18:29:10 GMT, Conor Cleary <[email protected]> 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.
src/java.net.http/share/classes/jdk/internal/net/http/Stream.java line 306:
> 304: @Override
> 305: void expectContinueFailed(int rcode) {
> 306: // TODO: add comment
Will add in a missing comment here!
-------------
PR: https://git.openjdk.java.net/jdk/pull/9093