[undertow-dev] Supporting HTTP CONNECT over HTTP/2?

Ivan Ristic ivan.ristic at gmail.com
Sun Apr 12 11:29:49 EDT 2020


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/undertow/server/handlers/ConnectHandler.java
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/undertow-dev/attachments/20200412/071fdcb7/attachment.html 


More information about the undertow-dev mailing list