diff --git a/src/main/java/org/jboss/netty/handler/codec/http/HttpMessageDecoder.java b/src/main/java/org/jboss/netty/handler/codec/http/HttpMessageDecoder.java index d6fe88e956..9e6c2248a0 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/HttpMessageDecoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/HttpMessageDecoder.java @@ -356,25 +356,26 @@ public abstract class HttpMessageDecoder extends ReplayingDecoder current = message.getHeaders(lastHeader); - int lastPos = current.size() - 1; - String newString = current.get(lastPos) + line.trim(); - current.remove(lastPos); - current.add(newString); - break; - default: - String[] header = splitHeader(line); - message.addHeader(header[0], header[1]); - lastHeader = header[0]; - } - line = readHeader(buffer); + if (line.length() != 0) { + message.clearHeaders(); + do { + switch (line.charAt(0)) { + case ' ': case '\t': + List current = message.getHeaders(lastHeader); + int lastPos = current.size() - 1; + String newString = current.get(lastPos) + line.trim(); + current.set(lastPos, newString); + break; + default: + String[] header = splitHeader(line); + message.addHeader(header[0], header[1]); + lastHeader = header[0]; + } + line = readHeader(buffer); + } while (line.length() != 0); } State nextState;