RFR: 8368695: Support 101 switching protocol in jdk.httpserver [v3]
Daniel Fuchs
dfuchs at openjdk.org
Mon Oct 13 16:13:12 UTC 2025
On Fri, 10 Oct 2025 21:22:49 GMT, Josiah Noel <duke at openjdk.org> 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
src/jdk.httpserver/share/classes/sun/net/httpserver/ExchangeImpl.java line 172:
> 170: if (upgrade) {
> 171: uis_orig = new UpgradeInputStream(this, ris);
> 172: } else if (reqContentLen == -1L) {
Are we sure that `upgrade` and `reqConteLength != 0` are always exclusive? IIRC this is not the case for the HTTP/2 upgrade. The request body (if present) is sent through HTTP/1.1 and only after that is the connection upgraded to HTTP/2 - if the upgrade is accepted. Also the handler could very well ignore the upgrade and continue with HTTP/1.1.
It seems we need more discussion on whether we should support connection upgrade and what kind of API would be needed for that.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27751#discussion_r2426749626
More information about the net-dev
mailing list