You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2011/10/17 08:10:10 UTC

svn commit: r1185015 - /james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java

Author: norman
Date: Mon Oct 17 06:10:10 2011
New Revision: 1185015

URL: http://svn.apache.org/viewvc?rev=1185015&view=rev
Log:
LineHandlerUpstreamHandler does create byte arrays with wrong size when copy data. See PROTOCOLS-42

Modified:
    james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java

Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java?rev=1185015&r1=1185014&r2=1185015&view=diff
==============================================================================
--- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java (original)
+++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/LineHandlerUpstreamHandler.java Mon Oct 17 06:10:10 2011
@@ -48,10 +48,17 @@ public class LineHandlerUpstreamHandler<
         ChannelBuffer buf = (ChannelBuffer) e.getMessage();      
         byte[] line;
         if (buf.hasArray()) {
-            line = buf.array();
+            if (buf.arrayOffset() == 0 && buf.readableBytes() == buf.capacity()) {
+                // we have no offset and the length is the same as the capacity. Its safe to reuse the array without copy it first
+                line = buf.array();
+            } else {
+                // copy the ChannelBuffer to a byte array to process the LineHandler
+                line = new byte[buf.readableBytes()];
+                buf.getBytes(0, line);
+            }
         } else {
             // copy the ChannelBuffer to a byte array to process the LineHandler
-            line = new byte[buf.capacity()];
+            line = new byte[buf.readableBytes()];
             buf.getBytes(0, line);
         }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org