From 4a937b7ca0224150617d60823fda7f1652925db1 Mon Sep 17 00:00:00 2001 From: Gernot Pansy Date: Wed, 16 Jul 2014 13:39:03 +0200 Subject: [PATCH] Fixed NPE in WebSocket00FrameDecoder if end couldn't be found in text frame Motivation: When we receive an incomplete WebSocketFrame we need to make sure to wait for more data. Because we not did this we could produce a NPE. Modification: Make sure we not try to add null into the RecyclableArrayList Result: no more NPE on incomplete frames. --- .../codec/http/websocketx/WebSocket00FrameDecoder.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket00FrameDecoder.java b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket00FrameDecoder.java index f88229fcdf..bd48f33c7a 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket00FrameDecoder.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket00FrameDecoder.java @@ -60,12 +60,17 @@ public class WebSocket00FrameDecoder extends ReplayingDecoder implements W // Decode a frame otherwise. byte type = in.readByte(); + WebSocketFrame frame; if ((type & 0x80) == 0x80) { // If the MSB on type is set, decode the frame length - out.add(decodeBinaryFrame(ctx, type, in)); + frame = decodeBinaryFrame(ctx, type, in); } else { // Decode a 0xff terminated UTF-8 string - out.add(decodeTextFrame(ctx, in)); + frame = decodeTextFrame(ctx, in); + } + + if (frame != null) { + out.add(frame); } }