On Fri, 10 Oct 2025 21:22:49 GMT, Josiah Noel <[email protected]> wrote:

>> - adds a flag to ExchangeImpl to signal whether the current request is an 
>> Upgrade request
>> - Adds a new `UpgradeInputStream` to ensure that the server keeps track of 
>> when the upgraded request is closed
>> - on 101 response codes, `sendResponseHeaders` will not immediately close 
>> the output stream 
>> - on 101 response codes, `sendResponseHeaders` will use an 
>> `UndefLengthOutputStream`
>
> Josiah Noel has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Update UpgradeInputStream.java

But that would be an incompatible change, isn't it?

Consider the following:


httpserver.createContext("/echo/", (exch) -> {
   byte[] bytes;
   try (var is = exch.getRequestBody()) { bytes = is.readAllBytes(); }
   exch.sendResponseHeaders(200, bytes.length == 0 ? -1  : bytes.length);
   try (var os = exch.getResponseBody()) { if (bytes.length > 0) 
os.write(bytes); } 
});


wouldn't that now block forever if the request contains an upgrade header?

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

PR Comment: https://git.openjdk.org/jdk/pull/27751#issuecomment-3402699078

Reply via email to