From c511ff9872f23d7674d0e8bfc8dc58be76623015 Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Mon, 30 Mar 2009 02:03:01 +0000 Subject: [PATCH] Fixed issue: NETTY-134 HttpChunkAggregator should not wait for content when the response status code implies empty content. * Added HttpChunkAggregator.isContentAlwaysEmpty() and implemented it with default behavior (i.e. return true when status code is < 200, 204, 205, or 304) --- .../handler/codec/http/HttpChunkAggregator.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jboss/netty/handler/codec/http/HttpChunkAggregator.java b/src/main/java/org/jboss/netty/handler/codec/http/HttpChunkAggregator.java index 2dd7e3c4b4..73e3f6ed0e 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/HttpChunkAggregator.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/HttpChunkAggregator.java @@ -65,7 +65,7 @@ public class HttpChunkAggregator extends SimpleChannelUpstreamHandler { HttpMessage currentMessage = this.currentMessage; if (currentMessage == null) { HttpMessage m = (HttpMessage) msg; - if (m.isChunked()) { + if (!isContentAlwaysEmpty(m) && m.isChunked()) { // A chunked message - remove 'Transfer-Encoding' header, // initialize the cumulative buffer, and wait for incoming chunks. List encodings = m.getHeaders(HttpHeaders.Names.TRANSFER_ENCODING); @@ -100,4 +100,19 @@ public class HttpChunkAggregator extends SimpleChannelUpstreamHandler { } } } + + protected boolean isContentAlwaysEmpty(HttpMessage msg) { + if (msg instanceof HttpResponse) { + HttpResponse res = (HttpResponse) msg; + int code = res.getStatus().getCode(); + if (code < 200) { + return true; + } + switch (code) { + case 204: case 205: case 304: + return true; + } + } + return false; + } }