RFR: 8314978: Multiple server call from connection failing with expect100 in getOutputStream [v2]

Vyom Tewari vtewari at openjdk.org
Wed Sep 13 09:38:38 UTC 2023


On Tue, 12 Sep 2023 12:05:51 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:

> Hi Vyom, the HttpClient is a different API. We're talking about the HttpURLConnection here. You're calling `HttpURLConnection::getOutputStream()` ; it blocks for a while waiting for 100 from the server. If the server returns 100, or takes too long to return 100, the method call returns an OutputStream that you can use to write the request body. If the server returns anything but 100, the method call throws a `ProtocolException`, as there is no point sending a body at this point. Therefore no OutputStream will be returned. You should catch the exception and look at the status code: then you can decide how to proceed depending on whether the status code returned is 200, 417, or something else. This may not be ideal but this is how it is supposed to work in HttpURLConnection. If we had a different API we could have returned an `Optional<OutputStream>` but that's not how the API was designed. `Optional` didn't exists at the time.

If this is the case then  the my proposed fix is correct. I will update the PR to address minor review comments.

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

PR Comment: https://git.openjdk.org/jdk/pull/15483#issuecomment-1717286586


More information about the net-dev mailing list