From 29bed32a89d20024d171bc46973ea99b9c6dd965 Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Mon, 21 Jan 2013 10:41:23 +0100 Subject: [PATCH] [#963] Fix invalid free-up of messages if they are only passed-throught in HttpContentEncoder and HttpContentDecoder --- .../handler/codec/http/HttpContentDecoder.java | 9 +++++++++ .../handler/codec/http/HttpContentEncoder.java | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentDecoder.java b/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentDecoder.java index cb65cae39a..81c52b3bd9 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentDecoder.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentDecoder.java @@ -114,6 +114,15 @@ public abstract class HttpContentDecoder extends MessageToMessageDecoder return msg; } + @Override + protected void freeInboundMessage(Object msg) throws Exception { + if (decoder == null) { + // if the decoder was null we returned the original message so we are not allowed to free it + return; + } + super.freeInboundMessage(msg); + } + private Object[] decodeContent(HttpMessage header, HttpContent c) { ByteBuf newContent = Unpooled.buffer(); ByteBuf content = c.data(); diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentEncoder.java b/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentEncoder.java index 392323ced1..63a9d1d104 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentEncoder.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/HttpContentEncoder.java @@ -161,6 +161,20 @@ public abstract class HttpContentEncoder extends MessageToMessageCodec