> Currently `HttpClient` will timeout if a server doesn't respond to a request > which includes `Expect: 100-Continue` > > Section 10.1.1 of [rfc > 9110](https://datatracker.ietf.org/doc/html/rfc9110#name-expect) states that > > a client SHOULD NOT wait for an indefinite period before sending the content. > > > > This PR changes `HttpClient` to wait for a maximum of 5 seconds for a server > response, this will be shorter if a timeout is set. If no response is > received, the message will be sent regardless. > This should bring `HttpClient` in line with how > [HttpUrlConnection](https://github.com/DarraghClarke/jdk/blob/61386c199a3b29457c002ad31a23990b7f6f88fd/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java#L1305) > treats expect continue timeouts. > > This is done using `orTimeout` in the `expectContinue` method , though there > is some changes in `streams.java` where it was possible for race conditions > to cause timeouts where `CompleteableFuture`s were removed from > `response_cfs` prematurely or in some cases not removed at all. > > I've tested this against tiers 1-3 and it appears to be stable.
Darragh Clarke has updated the pull request incrementally with one additional commit since the last revision: fixed formatting ------------- Changes: - all: https://git.openjdk.org/jdk/pull/20525/files - new: https://git.openjdk.org/jdk/pull/20525/files/65d65a15..8ef19ffc Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=20525&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=20525&range=03-04 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/20525.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/20525/head:pull/20525 PR: https://git.openjdk.org/jdk/pull/20525