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