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

Daniel Fuchs dfuchs at openjdk.org
Mon Sep 4 16:53:39 UTC 2023


On Sun, 3 Sep 2023 09:16:24 GMT, Vyom Tewari <vtewari at openjdk.org> wrote:

>> With the current implementation of HttpURLConnection  if server rejects the  “Expect 100-continue” then there will be ‘java.net.ProtocolException’ will be thrown from 'expect100Continue()' method. 
>> 
>> After the exception thrown, If we call any other method on the same instance (ex getHeaderField(), or getHeaderFields()). They will internally call getOuputStream() which invokes writeRequests(), which make the actual server call.
>> 
>> The code change will sets the existing variable ‘rememberedException’ when there is exception and getOutputStream0() will re-throw ‘rememberedException’  if the ‘rememberedException’ is not null. 
>> 
>> Note: getOutputStream0() also call’s  ‘expect100Continue()’  if ‘expectContinue’ is true.
>
> Vyom Tewari has updated the pull request incrementally with one additional commit since the last revision:
> 
>   modified the junit tests names

IIRC the `ProtocolException` here is caught higher in the stack - I believe that's what the comment `// responseCode will be returned to caller` means. @DarraghClarke might remember. There is much history here. The fix may appear simple on the surface but I would like to double check that it doesn't break anything.

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

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


More information about the net-dev mailing list