From f7a4a646f878e69532cbce5a21a3236c67014232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl=20Bystr=C3=B6m?= Date: Sat, 4 Feb 2012 16:59:04 +0100 Subject: [PATCH] Don't require HttpChunkAggregator to be present in pipeline for Web Sockets. --- .../codec/http/websocketx/WebSocketServerHandshaker00.java | 4 +++- .../codec/http/websocketx/WebSocketServerHandshaker08.java | 5 ++++- .../codec/http/websocketx/WebSocketServerHandshaker13.java | 5 ++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00.java b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00.java index da6aee631e..4af7445fd5 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00.java @@ -164,7 +164,9 @@ public class WebSocketServerHandshaker00 extends WebSocketServerHandshaker { // Upgrade the connection and send the handshake response. ChannelPipeline p = channel.getPipeline(); - p.remove(HttpChunkAggregator.class); + if (p.get(HttpChunkAggregator.class) != null) { + p.remove(HttpChunkAggregator.class); + } p.replace(HttpRequestDecoder.class, "wsdecoder", new WebSocket00FrameDecoder()); ChannelFuture future = channel.write(res); diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker08.java b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker08.java index e188798a7e..5fabceaf86 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker08.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker08.java @@ -138,7 +138,10 @@ public class WebSocketServerHandshaker08 extends WebSocketServerHandshaker { // Upgrade the connection and send the handshake response. ChannelPipeline p = channel.getPipeline(); - p.remove(HttpChunkAggregator.class); + if (p.get(HttpChunkAggregator.class) != null) { + p.remove(HttpChunkAggregator.class); + } + p.replace(HttpRequestDecoder.class, "wsdecoder", new WebSocket08FrameDecoder(true, allowExtensions)); p.replace(HttpResponseEncoder.class, "wsencoder", new WebSocket08FrameEncoder(false)); diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker13.java b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker13.java index d93f581604..f8debb39c9 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker13.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker13.java @@ -139,7 +139,10 @@ public class WebSocketServerHandshaker13 extends WebSocketServerHandshaker { // Upgrade the connection and send the handshake response. ChannelPipeline p = channel.getPipeline(); - p.remove(HttpChunkAggregator.class); + if (p.get(HttpChunkAggregator.class) != null) { + p.remove(HttpChunkAggregator.class); + } + p.replace(HttpRequestDecoder.class, "wsdecoder", new WebSocket13FrameDecoder(true, allowExtensions)); p.replace(HttpResponseEncoder.class, "wsencoder", new WebSocket13FrameEncoder(false));