jdk.httpserver 101 status code closing connection

Daniel Fuchs daniel.fuchs at oracle.com
Wed Sep 3 13:24:24 UTC 2025


Hi Josia,

Unfortunately I can't look at that PR until the OCA
has been signed and processed.

That said I'd be worried about several potential issues:

- will the server keep a reference to the connection/socket
   so that it can be closed if HttpServer::close is called?
- how will the server know that the stream/connection
   has been closed so that the above reference can be
   removed, and stop can return early
- would there be a need to adjust any of the various timers that
   the server maintains?
- if HttpServer::stop is called before the connection is
   closed, what happens?
- will/should the Handler implementation return after acquiring
   the streams? Or after having closed them?

etc...

There may be a lot of corner cases in there that will need to
be tested, and maintained, and supported.

best regards,

-- daniel

On 03/09/2025 13:31, Josiah Noel wrote:
> 
>     The current code has some provision for some one hundred
>     codes but sendResponseHeaders appears not to have been
>     designed to send interim responses
> 
> 
>     A new method to send interim response codes might be better
> 
>     than trying to shoehorn sending one hundreds with the
> 
>     current API, but we haven't investigated that yet. 
> 
> 
> As the JIRA issue notes, there is nothing in the javadocs that suggests 
> that sending informational codes with the current API closes the 
> streams. Merely teaching the exchange that 101 status codes should not 
> enforce content-length -1 is enough.
> 
>     Making it possible to handle protocols like WebSocket from
>     within a Handler/Filter would bring that to the next level
>     though, and I suspect more surgery would be needed.
>     I am not sure it is something we would be looking forward
>     to support this in the long run.
> 
> 
> Indeed, if you were to add code to process WebSocket frames, that would 
> be yet another thing to maintain long-term, which is why I'm not 
> suggesting it. Not closing access to the streams is good enough to allow 
> the consumer to implement WebSockets. While I do also have code to 
> process the frames, that is out of scope for the issue at hand.
> 
> I've raised a one-file PR illustrating the changes I'm talking about 
> <https://urldefense.com/v3/__https://github.com/openjdk/jdk/pull/27069__;!!ACWV5N9M2RV99hQ!JOxb2ls3Lkvn31MUo0cJkXKCVB9LU1okVBNXGBsZMDk9TfdS5ZcnZoBTyNe8epT9YnnfCEbpmuQkINHFTYT_hQ$>. If you could spare time to briefly skim it over to get a better sense of what I'm talking about, I would be most grateful.
> 
> Thanks for your time,
> 
> -- Josiah



More information about the net-dev mailing list