From a6f3dda334d7ba5f038f142f0aff79169d26ec4c Mon Sep 17 00:00:00 2001 From: Stuart Douglas Date: Wed, 22 Mar 2017 14:28:20 +1100 Subject: [PATCH] If HTTP/2 is enabled register the upgrade handler --- core/src/main/java/io/undertow/Undertow.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/io/undertow/Undertow.java b/core/src/main/java/io/undertow/Undertow.java index 379ab9eb52..24a4c99136 100644 --- a/core/src/main/java/io/undertow/Undertow.java +++ b/core/src/main/java/io/undertow/Undertow.java @@ -34,6 +34,7 @@ import org.xnio.OptionMap; import org.xnio.Options; import io.undertow.connector.ByteBufferPool; +import io.undertow.server.protocol.http2.Http2UpgradeHandler; import org.xnio.StreamConnection; import org.xnio.Xnio; import org.xnio.XnioWorker; @@ -159,9 +160,14 @@ public synchronized void start() { listenerInfo.add(new ListenerInfo("ajp", server.getLocalAddress(), null, openListener)); } else { OptionMap undertowOptions = OptionMap.builder().set(UndertowOptions.BUFFER_PIPELINED_DATA, true).addAll(serverOptions).getMap(); + boolean http2 = serverOptions.get(UndertowOptions.ENABLE_HTTP2, false); if (listener.type == ListenerType.HTTP) { HttpOpenListener openListener = new HttpOpenListener(buffers, undertowOptions); - openListener.setRootHandler(rootHandler); + HttpHandler handler = rootHandler; + if(http2) { + handler = new Http2UpgradeHandler(handler); + } + openListener.setRootHandler(handler); ChannelListener> acceptListener = ChannelListeners.openListenerAdapter(openListener); OptionMap socketOptionsWithOverrides = OptionMap.builder().addAll(socketOptions).addAll(listener.overrideSocketOptions).getMap(); AcceptingChannel server = worker.createStreamConnectionServer(new InetSocketAddress(Inet4Address.getByName(listener.host), listener.port), acceptListener, socketOptionsWithOverrides); @@ -174,7 +180,6 @@ public synchronized void start() { HttpOpenListener httpOpenListener = new HttpOpenListener(buffers, undertowOptions); httpOpenListener.setRootHandler(rootHandler); - boolean http2 = serverOptions.get(UndertowOptions.ENABLE_HTTP2, false); if(http2) { AlpnOpenListener alpn = new AlpnOpenListener(buffers, undertowOptions, httpOpenListener); if(http2) {