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/05/09 14:25:10 UTC

svn commit: r169302 - in /directory/network/branches/api_integration/src: java/org/apache/mina/common/ java/org/apache/mina/filter/ java/org/apache/mina/filter/codec/ java/org/apache/mina/transport/socket/nio/ test/org/apache/mina/examples/echoserver/

Author: trustin
Date: Mon May  9 05:25:09 2005
New Revision: 169302

URL: http://svn.apache.org/viewcvs?rev=169302&view=rev
Log:
Fixed: messageSent gives empty bytebuffer

Modified:
    directory/network/branches/api_integration/src/java/org/apache/mina/common/ByteBuffer.java
    directory/network/branches/api_integration/src/java/org/apache/mina/filter/SSLFilter.java
    directory/network/branches/api_integration/src/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
    directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
    directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
    directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
    directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/SocketSessionManagerFilterChain.java
    directory/network/branches/api_integration/src/test/org/apache/mina/examples/echoserver/AbstractTest.java
    directory/network/branches/api_integration/src/test/org/apache/mina/examples/echoserver/AcceptorTest.java

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/common/ByteBuffer.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/common/ByteBuffer.java?rev=169302&r1=169301&r2=169302&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/common/ByteBuffer.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/common/ByteBuffer.java Mon May  9 05:25:09 2005
@@ -748,7 +748,7 @@
 
         public String toString()
         {
-            return buf.toString();
+            return buf.toString() + " (" + getHexDump() + ')';
         }
 
         public int hashCode()

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/filter/SSLFilter.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/filter/SSLFilter.java?rev=169302&r1=169301&r2=169302&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/filter/SSLFilter.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/filter/SSLFilter.java Mon May  9 05:25:09 2005
@@ -29,6 +29,7 @@
 import javax.net.ssl.SSLHandshakeException;
 
 import org.apache.mina.common.ByteBuffer;
+import org.apache.mina.common.ByteBufferProxy;
 import org.apache.mina.common.IoFilterAdapter;
 import org.apache.mina.common.IoHandler;
 import org.apache.mina.common.IoSession;
@@ -191,7 +192,7 @@
         nextFilter.sessionOpened( session );
     }
 
-    public void sessionClosed( NextFilter nextFilter, IoSession session )
+    public void sessionClosed( NextFilter nextFilter, IoSession session ) throws SSLException
     {
         SSLHandler sslHandler = getSSLSessionHandler( session );
         if( log.isLoggable( Level.FINEST ) )
@@ -211,10 +212,6 @@
                   // there might be data to write out here?
                   writeNetBuffer( session, sslHandler );
                }
-               catch( SSLException ssle )
-               {
-                  nextFilter.exceptionCaught( session, ssle );
-               }
                finally
                {
                   // notify closed session
@@ -229,7 +226,7 @@
     }
    
     public void messageReceived( NextFilter nextFilter, IoSession session,
-                                 Object message )
+                                 Object message ) throws SSLException
     {
         ByteBuffer buf = ( ByteBuffer ) message;
         SSLHandler sslHandler = getSSLSessionHandler( session );
@@ -269,7 +266,7 @@
                         ssle = newSSLE;
                     }
 
-                    nextFilter.exceptionCaught( session, ssle );
+                    throw ssle;
                 }
             }
         }
@@ -282,7 +279,16 @@
     public void messageSent( NextFilter nextFilter, IoSession session,
                              Object message )
     {
-        nextFilter.messageSent( session, message );
+        if( message instanceof EncryptedBuffer )
+        {
+            EncryptedBuffer buf = ( EncryptedBuffer ) message;
+            buf.release();
+            nextFilter.messageSent( session, buf.originalBuffer );
+        }
+        else
+        {
+            // ignore extra buffers used for handshaking
+        }
     }
 
     public void filterWrite( NextFilter nextFilter, IoSession session, Object message ) throws SSLException
@@ -315,15 +321,17 @@
                 {
                     log.log( Level.FINEST, session + " encrypt: " + buf );
                 }
+                
+                int pos = buf.position();
                 handler.encrypt( buf.buf() );
-                ByteBuffer encryptedBuffer = copy( handler
-                        .getOutNetBuffer() );
+                buf.position( pos );
+                ByteBuffer encryptedBuffer = new EncryptedBuffer(
+                        copy( handler.getOutNetBuffer() ), buf );
 
                 if( log.isLoggable( Level.FINEST ) )
                 {
                     log.log( Level.FINEST, session + " encrypted buf: " + encryptedBuffer);
                 }
-                buf.release();
                 nextFilter.filterWrite( session, encryptedBuffer );
                 return;
             }
@@ -515,6 +523,17 @@
         synchronized( sslSessionHandlerMap )
         {
             sslSessionHandlerMap.remove( session );
+        }
+    }
+
+    private static class EncryptedBuffer extends ByteBufferProxy
+    {
+        private final ByteBuffer originalBuffer;
+        
+        private EncryptedBuffer( ByteBuffer buf, ByteBuffer originalBuffer )
+        {
+            super( buf );
+            this.originalBuffer = originalBuffer;
         }
     }
 }

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?rev=169302&r1=169301&r2=169302&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java Mon May  9 05:25:09 2005
@@ -148,6 +148,5 @@
             super( buf );
             this.message = message;
         }
-        
     }
 }

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java?rev=169302&r1=169301&r2=169302&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java Mon May  9 05:25:09 2005
@@ -363,6 +363,7 @@
                 continue;
             }
 
+            int pos = buf.position();
             int writtenBytes = ch
                     .send( buf.buf(), session.getRemoteAddress() );
 
@@ -384,7 +385,7 @@
                 }
 
                 session.increaseWrittenBytes( writtenBytes );
-                session.getManagerFilterChain().messageSent( session, buf );
+                session.getManagerFilterChain().messageSent( session, buf.position( pos ) );
             }
         }
     }

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/DatagramConnector.java?rev=169302&r1=169301&r2=169302&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/DatagramConnector.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/DatagramConnector.java Mon May  9 05:25:09 2005
@@ -360,6 +360,7 @@
                 continue;
             }
 
+            int pos = buf.position();
             int writtenBytes = ch.write( buf.buf() );
 
             SelectionKey key = session.getSelectionKey();
@@ -380,7 +381,7 @@
                 }
 
                 session.increaseWrittenBytes( writtenBytes );
-                session.getManagerFilterChain().messageSent( session, buf );
+                session.getManagerFilterChain().messageSent( session, buf.position( pos ) );
             }
         }
     }

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java?rev=169302&r1=169301&r2=169302&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java Mon May  9 05:25:09 2005
@@ -451,7 +451,7 @@
                     writeBufferQueue.pop();
                 }
                 
-                session.getManagerFilterChain().messageSent( session, buf );
+                session.getManagerFilterChain().messageSent( session, buf.reset() );
                 continue;
             }
 

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/SocketSessionManagerFilterChain.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/SocketSessionManagerFilterChain.java?rev=169302&r1=169301&r2=169302&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/SocketSessionManagerFilterChain.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/transport/socket/nio/SocketSessionManagerFilterChain.java Mon May  9 05:25:09 2005
@@ -1,5 +1,6 @@
 package org.apache.mina.transport.socket.nio;
 
+import org.apache.mina.common.ByteBuffer;
 import org.apache.mina.common.IoFilterChain;
 import org.apache.mina.common.IoSession;
 import org.apache.mina.common.IoSessionManager;
@@ -23,6 +24,7 @@
         SocketSession s = ( SocketSession ) session;
         Queue writeBufferQueue = s.getWriteBufferQueue();
         
+        ( ( ByteBuffer ) message ).mark();
         synchronized( writeBufferQueue )
         {
             writeBufferQueue.push( message );

Modified: directory/network/branches/api_integration/src/test/org/apache/mina/examples/echoserver/AbstractTest.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/test/org/apache/mina/examples/echoserver/AbstractTest.java?rev=169302&r1=169301&r2=169302&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/test/org/apache/mina/examples/echoserver/AbstractTest.java (original)
+++ directory/network/branches/api_integration/src/test/org/apache/mina/examples/echoserver/AbstractTest.java Mon May  9 05:25:09 2005
@@ -73,7 +73,7 @@
     protected void setUp() throws Exception
     {
         registry = new SimpleServiceRegistry();
-        
+
         // Find an availble test port and bind to it.
         boolean socketBound = false;
         boolean datagramBound = false;

Modified: directory/network/branches/api_integration/src/test/org/apache/mina/examples/echoserver/AcceptorTest.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/test/org/apache/mina/examples/echoserver/AcceptorTest.java?rev=169302&r1=169301&r2=169302&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/test/org/apache/mina/examples/echoserver/AcceptorTest.java (original)
+++ directory/network/branches/api_integration/src/test/org/apache/mina/examples/echoserver/AcceptorTest.java Mon May  9 05:25:09 2005
@@ -35,6 +35,7 @@
 import org.apache.mina.examples.echoserver.ssl.BogusSSLContextFactory;
 import org.apache.mina.examples.echoserver.ssl.SSLServerSocketFactory;
 import org.apache.mina.examples.echoserver.ssl.SSLSocketFactory;
+import org.apache.mina.filter.LoggingFilter;
 import org.apache.mina.filter.SSLFilter;
 
 /**
@@ -62,6 +63,7 @@
             new SSLFilter( BogusSSLContextFactory.getInstance( true ) );
         IoAcceptor acceptor = registry.getAcceptor( TransportType.SOCKET );
         acceptor.getFilterChain().addLast( "SSL", sslFilter );
+        acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
         
         // Create a commons-net socket factory
         SSLSocketFactory.setSslEnabled(true);