You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2005/04/23 02:20:45 UTC

svn commit: r164306 - /directory/network/trunk/src/java/org/apache/mina/io/filter/SSLFilter.java

Author: trustin
Date: Fri Apr 22 17:20:45 2005
New Revision: 164306

URL: http://svn.apache.org/viewcvs?rev=164306&view=rev
Log:
I made a silly mistake on SSLFilter! :(

Modified:
    directory/network/trunk/src/java/org/apache/mina/io/filter/SSLFilter.java

Modified: directory/network/trunk/src/java/org/apache/mina/io/filter/SSLFilter.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/io/filter/SSLFilter.java?rev=164306&r1=164305&r2=164306&view=diff
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/io/filter/SSLFilter.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/io/filter/SSLFilter.java Fri Apr 22 17:20:45 2005
@@ -240,8 +240,8 @@
                             debug.print( "encrypt: " + buf );
                         }
                         sslHandler.encrypt( buf.buf() );
-                        ByteBuffer encryptedBuffer =
-                            ByteBuffer.wrap( sslHandler.getOutNetBuffer() );
+                        ByteBuffer encryptedBuffer = copy( sslHandler
+                                .getOutNetBuffer() );
 
                         if( debug != null )
                         {
@@ -284,8 +284,7 @@
         if( sslHandler.getAppBuffer().hasRemaining() )
         {
             // forward read app data
-            ByteBuffer readBuffer =
-                ByteBuffer.wrap( sslHandler.getAppBuffer() );
+            ByteBuffer readBuffer = copy( sslHandler.getAppBuffer() );
             if( debug != null )
             {
                 debug.print( "app data read: " + readBuffer + " (" + readBuffer.getHexDump() + ')' );
@@ -320,8 +319,7 @@
                 debug.print( "write outNetBuffer: "
                         + sslHandler.getOutNetBuffer() );
             }
-            ByteBuffer writeBuffer =
-                ByteBuffer.wrap( sslHandler.getOutNetBuffer() );
+            ByteBuffer writeBuffer = copy( sslHandler.getOutNetBuffer() );
             if( debug != null )
             {
                 debug.print( "session write: " + writeBuffer );
@@ -350,8 +348,8 @@
                         debug.print( "write outNetBuffer2: "
                                 + sslHandler.getOutNetBuffer() );
                     }
-                    ByteBuffer writeBuffer2 =
-                        ByteBuffer.wrap ( sslHandler.getOutNetBuffer() );
+                    ByteBuffer writeBuffer2 = copy( sslHandler
+                            .getOutNetBuffer() );
                     session.write( writeBuffer2, null );
                 }
             }
@@ -363,6 +361,21 @@
                 sslHandler.setWritingEncryptedData( false );
             }
         }
+    }
+
+    /**
+     * Creates a new Mina byte buffer that is a deep copy of the remaining bytes
+     * in the given buffer (between index buf.position() and buf.limit())
+     *
+     * @param src the buffer to copy
+     * @return the new buffer, ready to read from
+     */
+    private static ByteBuffer copy( java.nio.ByteBuffer src )
+    {
+        ByteBuffer copy = ByteBuffer.allocate( src.remaining() );
+        copy.put( src );
+        copy.flip();
+        return copy;
     }
 
     // Utilities to mainpulate SSLHandler based on IoSession