diff --git a/codec-http/src/main/java/io/netty/handler/codec/spdy/SpdyOrHttpChooser.java b/codec-http/src/main/java/io/netty/handler/codec/spdy/SpdyOrHttpChooser.java index 022071aec1..29a9e1baf5 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/spdy/SpdyOrHttpChooser.java +++ b/codec-http/src/main/java/io/netty/handler/codec/spdy/SpdyOrHttpChooser.java @@ -25,6 +25,7 @@ import io.netty.handler.codec.http.HttpObjectAggregator; import io.netty.handler.codec.http.HttpRequestDecoder; import io.netty.handler.codec.http.HttpResponseEncoder; import io.netty.handler.ssl.SslHandler; +import io.netty.util.internal.StringUtil; import javax.net.ssl.SSLEngine; import java.util.List; @@ -84,7 +85,15 @@ public abstract class SpdyOrHttpChooser extends ByteToMessageDecoder { * {@link SelectedProtocol#UNKNOWN}. * */ - protected abstract SelectedProtocol getProtocol(SSLEngine engine); + protected SelectedProtocol getProtocol(SSLEngine engine) { + String[] protocol = StringUtil.split(engine.getSession().getProtocol(), ':'); + if (protocol.length < 2) { + // Use HTTP/1.1 as default + return SelectedProtocol.HTTP_1_1; + } + SelectedProtocol selectedProtocol = SelectedProtocol.protocol(protocol[1]); + return selectedProtocol; + } @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { diff --git a/example/src/main/java/io/netty/example/spdy/server/SpdyOrHttpHandler.java b/example/src/main/java/io/netty/example/spdy/server/SpdyOrHttpHandler.java index 629f64dcce..e27a1d2a83 100644 --- a/example/src/main/java/io/netty/example/spdy/server/SpdyOrHttpHandler.java +++ b/example/src/main/java/io/netty/example/spdy/server/SpdyOrHttpHandler.java @@ -18,8 +18,6 @@ package io.netty.example.spdy.server; import io.netty.channel.ChannelInboundHandler; import io.netty.handler.codec.spdy.SpdyOrHttpChooser; -import javax.net.ssl.SSLEngine; - /** * Negotiates with the browser if SPDY or HTTP is going to be used. Once decided, the Netty pipeline is setup with * the correct handlers for the selected protocol. @@ -36,14 +34,6 @@ public class SpdyOrHttpHandler extends SpdyOrHttpChooser { super(maxSpdyContentLength, maxHttpContentLength); } - @Override - protected SelectedProtocol getProtocol(SSLEngine engine) { - String[] protocol = engine.getSession().getProtocol().split(":"); - SelectedProtocol selectedProtocol = SelectedProtocol.protocol(protocol[1]); - System.err.println("Selected Protocol is " + selectedProtocol); - return selectedProtocol; - } - @Override protected ChannelInboundHandler createHttpRequestHandlerForHttp() { return new SpdyServerHandler();