From db502cea4c9954cb51466a1f8f13ac08ee29f21d Mon Sep 17 00:00:00 2001 From: ursa Date: Tue, 5 Feb 2013 19:07:31 +0400 Subject: [PATCH] Fix line-end detection for binary streams upload - Related: #1017 (and #1016) --- .../multipart/HttpPostRequestDecoder.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/org/jboss/netty/handler/codec/http/multipart/HttpPostRequestDecoder.java b/src/main/java/org/jboss/netty/handler/codec/http/multipart/HttpPostRequestDecoder.java index ac20b5abc0..73c2c84def 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/multipart/HttpPostRequestDecoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/multipart/HttpPostRequestDecoder.java @@ -1517,6 +1517,12 @@ public class HttpPostRequestDecoder { newLine = true; index = 0; lastPosition = undecodedChunk.readerIndex() - 2; + } else { + // save last valid position + lastPosition = undecodedChunk.readerIndex() - 1; + + // Unread next byte. + undecodedChunk.readerIndex(lastPosition); } } } else if (nextByte == HttpConstants.LF) { @@ -1537,6 +1543,12 @@ public class HttpPostRequestDecoder { newLine = true; index = 0; lastPosition = undecodedChunk.readerIndex() - 2; + } else { + // save last valid position + lastPosition = undecodedChunk.readerIndex() - 1; + + // Unread next byte. + undecodedChunk.readerIndex(lastPosition); } } } else if (nextByte == HttpConstants.LF) { @@ -1619,6 +1631,12 @@ public class HttpPostRequestDecoder { newLine = true; index = 0; lastrealpos = sao.pos - 2; + } else { + // unread next byte + sao.pos--; + + // save last valid position + lastrealpos = sao.pos; } } } else if (nextByte == HttpConstants.LF) { @@ -1639,6 +1657,12 @@ public class HttpPostRequestDecoder { newLine = true; index = 0; lastrealpos = sao.pos - 2; + } else { + // unread next byte + sao.pos--; + + // save last valid position + lastrealpos = sao.pos; } } } else if (nextByte == HttpConstants.LF) {