RFR: 8352502: Response message is null if expect 100 assertion fails with non 100
    Daniel Fuchs 
    dfuchs at openjdk.org
       
    Thu Jun 26 11:34:31 UTC 2025
    
    
  
On Thu, 26 Jun 2025 10:48:56 GMT, Darragh Clarke <dclarke at openjdk.org> wrote:
> Currently if a request has set Expect-Continue and receives a non 100 response the `responseMessage` wouldn't be set.
> 
> This PR sets `responseMessage`, it also updates `getResponseMessage` to check if the message has already been set. This should match the way that `responseCode` is currently handled.
> 
> I also added a test to cover some possible responses.
test/jdk/java/net/httpclient/ExpectContinueResponseMessageTest.java line 98:
> 96:             while (!control.stop) {
> 97:                 try {
> 98:                     Socket socket = control.serverSocket.accept();
So this socket will not be closed... I understand closing it here might cause a reset...
Is that the reason for the catch clause on the client side?
test/jdk/java/net/httpclient/ExpectContinueResponseMessageTest.java line 124:
> 122:                     //send a wrong response
> 123:                     outputStream.write(control.statusLine.getBytes());
> 124:                     outputStream.flush();
If you added Content-Length: 0 the the status line (which should be better called response BTW) then you should be able to at least call `socket.shutdownOutput()` here.
test/jdk/java/net/httpclient/ExpectContinueResponseMessageTest.java line 149:
> 147:         String body = "Testing: " + expectedCode;
> 148:         Control control = this.control;
> 149:         control.statusLine = statusLine + "\r\n\r\n";
Shouldn't you add Content-Length: 0 here?
test/jdk/java/net/httpclient/ExpectContinueResponseMessageTest.java line 159:
> 157:         } catch (Exception ex) {
> 158:             // swallow the exception
> 159:         }
@DarraghClarke - I am curious, is this catch clause necessary? If it is maybe you could improve the comment here to explain why it is necessary.
test/jdk/java/net/httpclient/ExpectContinueResponseMessageTest.java line 167:
> 165:         assertTrue(expectedMessage.equals(responseMessage),
> 166:                 String.format("Expected Response Message  %s, instead received %s",
> 167:                         expectedMessage, responseMessage));
maybe the connection should be explicitely closed at the end.
maybe the accepted socket should be added to Control and closed here too?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25999#discussion_r2168831749
PR Review Comment: https://git.openjdk.org/jdk/pull/25999#discussion_r2168849333
PR Review Comment: https://git.openjdk.org/jdk/pull/25999#discussion_r2168833905
PR Review Comment: https://git.openjdk.org/jdk/pull/25999#discussion_r2168825892
PR Review Comment: https://git.openjdk.org/jdk/pull/25999#discussion_r2168844935
    
    
More information about the net-dev
mailing list