Correctly shutting down a websocket handler
by Robin Anil
When a client disconnects, I see that onClose is not being fired. The only
way this seems to be firing if client sents a close frame.
Is there any way to detect disconnection and immediately close all the
opened resources.
Robin
Robin Anil | Software Engineer
1 year, 2 months
Supporting HTTP CONNECT over HTTP/2?
by Ivan Ristic
Hello list,
Is there any interest in getting HTTP CONNECT over HTTP/2 to work? I spent
some time on it, but although I fixed two small issues, I hit a third that
was beyond my undertow knowledge. I was left feeling that getting this to
work only requires a few connecting pieces, although naturally I could be
wrong.
Here's what I discovered:
- In Http2ReceiveListener, there's code that refuses requests that don't
have path set (with "No :path header sent in HTTP/2 request"). However,
path must be omitted with CONNECT per
https://tools.ietf.org/html/rfc7540#page-64
- Later on, ConnectHandler doesn't expect the path to be null.
- The acceptConnectRequest handler from
https://github.com/undertow-io/undertow/blob/master/core/src/main/java/io...
is not getting called and the connection is thus not setup. This is because
Http2ServerConnection#setConnectListener doesn't do anything, unlike its
counterpart HttpServerConnection.
For context, I was playing with the idea of building a general-purpose
forward TCP proxy based on undertow. HTTP/2 is of interest here because of
multiplexing, which would eliminate connection setup costs [of both TCP and
TLS] between the client and proxy and substantially improve performance
when many connections are needed.
If it matters, I used Jetty's HTTP/2 client library to connect to Undertow,
although I had to patch it to not send path and scheme when method is
CONNECT.
--
Ivan
4 years, 7 months