diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectDecoder.java b/codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectDecoder.java index dc4c78c087..c30eabe9ef 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectDecoder.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectDecoder.java @@ -206,19 +206,13 @@ public abstract class HttpObjectDecoder extends ReplayingDecoder out) { + if (out != null) { + HttpMessage message = this.message; + ByteBuf content = this.content; + LastHttpContent httpContent; - if (content == null || !content.isReadable()) { - httpContent = LastHttpContent.EMPTY_LAST_CONTENT; - } else { - httpContent = new DefaultLastHttpContent(content); + if (content == null || !content.isReadable()) { + httpContent = LastHttpContent.EMPTY_LAST_CONTENT; + } else { + httpContent = new DefaultLastHttpContent(content); + } + + out.add(message); + out.add(httpContent); } - HttpObject[] messages = { message, httpContent }; - this.content = null; - this.message = null; + content = null; + message = null; checkpoint(State.SKIP_CONTROL_CHARS); - return messages; } private HttpMessage invalidMessage(Exception cause) { @@ -506,7 +500,7 @@ public abstract class HttpObjectDecoder extends ReplayingDecoder out) { //we have a content-length so we just read the correct number of bytes long length = HttpHeaders.getContentLength(message, -1); assert length <= Integer.MAX_VALUE; @@ -516,14 +510,16 @@ public abstract class HttpObjectDecoder extends ReplayingDecoder