<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hello list,<div><br></div><div>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.</div><div><br></div><div>Here&#39;s what I discovered:</div><div><br></div>- In Http2ReceiveListener, there&#39;s code that refuses requests that don&#39;t have path set (with &quot;No :path header sent in HTTP/2 request&quot;). However, path must be omitted with CONNECT per <a href="https://tools.ietf.org/html/rfc7540#page-64">https://tools.ietf.org/html/rfc7540#page-64</a> <br><br>- Later on, ConnectHandler doesn&#39;t expect the path to be null.</div>- The acceptConnectRequest handler from <a href="https://github.com/undertow-io/undertow/blob/master/core/src/main/java/io/undertow/server/handlers/ConnectHandler.java">https://github.com/undertow-io/undertow/blob/master/core/src/main/java/io/undertow/server/handlers/ConnectHandler.java</a> is not getting called and the connection is thus not setup. This is because Http2ServerConnection#setConnectListener doesn&#39;t do anything, unlike its counterpart HttpServerConnection.<div dir="ltr"><br></div><div>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.</div><div><br></div><div>If it matters, I used Jetty&#39;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.</div><div dir="ltr"><div><br></div>-- <br><div dir="ltr">Ivan</div></div></div></div></div></div></div></div></div></div></div>