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 [EMAIL PROTECTED]
InetSocketAddress}.
+ * Setting this attribute causes
+ * [EMAIL PROTECTED] SSLContext#createSSLEngine(String, int)} to be called
passing the
+ * hostname and port of the [EMAIL PROTECTED] InetSocketAddress} to get an
+ * [EMAIL PROTECTED] SSLEngine} instance. If not set [EMAIL PROTECTED]
SSLContext#createSSLEngine()}
+ * will be called.
+ * .
+ * Using this feature [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
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() )