RFR: 8286171: HttpClient/2 : Expect:100-Continue blocks indefinitely when response is not 100 [v3]
Conor Cleary
ccleary at openjdk.java.net
Thu Jun 9 11:27:47 UTC 2022
> **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.
Conor Cleary has updated the pull request incrementally with two additional commits since the last revision:
- 8286171: Package-protected access for method
- 8286171: Added checks for correct response codes
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/9093/files
- new: https://git.openjdk.java.net/jdk/pull/9093/files/ea059a21..dc5fa264
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=9093&range=02
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=9093&range=01-02
Stats: 10 lines in 2 files changed: 7 ins; 0 del; 3 mod
Patch: https://git.openjdk.java.net/jdk/pull/9093.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/9093/head:pull/9093
PR: https://git.openjdk.java.net/jdk/pull/9093
More information about the net-dev
mailing list