You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ni...@apache.org on 2007/03/26 10:32:33 UTC

svn commit: r522453 - in /mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter: SSLFilter.java support/SSLHandler.java

Author: niklas
Date: Mon Mar 26 01:32:32 2007
New Revision: 522453

URL: http://svn.apache.org/viewvc?view=rev&rev=522453
Log:
Resolved DIRMINA-326: If the SSLFilter.PEER_ADDRESS session attribute is set SSLHandler will use SSLContext.createSSLEngine(hostname, port) which allows reuse of cached SSLSessions.

Modified:
    mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/SSLFilter.java
    mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/support/SSLHandler.java

Modified: mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/SSLFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/SSLFilter.java?view=diff&rev=522453&r1=522452&r2=522453
==============================================================================
--- mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/SSLFilter.java (original)
+++ mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/SSLFilter.java Mon Mar 26 01:32:32 2007
@@ -19,6 +19,8 @@
  */
 package org.apache.mina.filter;
 
+import java.net.InetSocketAddress;
+
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLEngine;
 import javax.net.ssl.SSLException;
@@ -101,6 +103,21 @@
      * doesn't emit any events related with SSL session flow control.
      */
     public static final String USE_NOTIFICATION = SSLFilter.class.getName() + ".UseNotification";
+    
+    /**
+     * A session attribute key that should be set to an {@link InetSocketAddress}. 
+     * Setting this attribute causes  
+     * {@link SSLContext#createSSLEngine(String, int)} to be called passing the 
+     * hostname and port of the {@link InetSocketAddress} to get an 
+     * {@link SSLEngine} instance. If not set {@link SSLContext#createSSLEngine()}
+     * will be called.
+     * .
+     * Using this feature {@link SSLSession} objects may be cached and reused 
+     * when in client mode. 
+     * 
+     * @see SSLContext#createSSLEngine(String, int)
+     */
+    public static final String PEER_ADDRESS = SSLFilter.class.getName() + ".PeerAddress";
     
     /**
      * A special message object which is emitted with a {@link IoHandler#messageReceived(IoSession, Object)}

Modified: mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/support/SSLHandler.java
URL: http://svn.apache.org/viewvc/mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/support/SSLHandler.java?view=diff&rev=522453&r1=522452&r2=522453
==============================================================================
--- mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/support/SSLHandler.java (original)
+++ mina/trunk/filter-ssl/src/main/java/org/apache/mina/filter/support/SSLHandler.java Mon Mar 26 01:32:32 2007
@@ -19,6 +19,7 @@
  */
 package org.apache.mina.filter.support;
 
+import java.net.InetSocketAddress;
 import java.nio.ByteBuffer;
 import java.util.LinkedList;
 import java.util.Queue;
@@ -111,7 +112,12 @@
             return;
         }
 
-        sslEngine = ctx.createSSLEngine();
+        InetSocketAddress peer = (InetSocketAddress) session.getAttribute(SSLFilter.PEER_ADDRESS);
+        if (peer == null) {
+            sslEngine = ctx.createSSLEngine();
+        } else {
+            sslEngine = ctx.createSSLEngine(peer.getHostName(), peer.getPort());
+        } 
         sslEngine.setUseClientMode( parent.isUseClientMode() );
 
         if ( parent.isWantClientAuth() )