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.

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

Commit messages:
 - 8314978: Multiple server call from connection failing with expect100 in 
getOutputStream

Changes: https://git.openjdk.org/jdk/pull/15483/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15483&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8314978
  Stats: 257 lines in 2 files changed: 257 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/15483.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/15483/head:pull/15483

PR: https://git.openjdk.org/jdk/pull/15483

Reply via email to