> **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 one additional commit since the last revision: 8286171: Updated comment ------------- Changes: - all: https://git.openjdk.java.net/jdk/pull/9093/files - new: https://git.openjdk.java.net/jdk/pull/9093/files/dc5fa264..28fff3b3 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=9093&range=03 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=9093&range=02-03 Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 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