You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2011/09/17 21:27:31 UTC

svn commit: r1172054 - in /httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http: impl/nio/AbstractIODispatch.java nio/reactor/ssl/SSLIOSession.java

Author: olegk
Date: Sat Sep 17 19:27:30 2011
New Revision: 1172054

URL: http://svn.apache.org/viewvc?rev=1172054&view=rev
Log:
Trying to fix race in SSL i/o session initialization

Modified:
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/AbstractIODispatch.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/AbstractIODispatch.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/AbstractIODispatch.java?rev=1172054&r1=1172053&r2=1172054&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/AbstractIODispatch.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/AbstractIODispatch.java Sat Sep 17 19:27:30 2011
@@ -78,8 +78,10 @@ public abstract class AbstractIODispatch
                     SSLIOSession.SESSION_KEY);
             if (ssliosession != null) {
                 try {
-                    if (!ssliosession.isInitialized()) {
-                        ssliosession.initialize();
+                    synchronized (ssliosession) {
+                        if (!ssliosession.isInitialized()) {
+                            ssliosession.initialize();
+                        }
                     }
                 } catch (IOException ex) {
                     onException(conn, ex);

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java?rev=1172054&r1=1172053&r2=1172054&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java Sat Sep 17 19:27:30 2011
@@ -131,6 +131,9 @@ public class SSLIOSession implements IOS
         if (this.initialized) {
             throw new IllegalStateException("SSL I/O session already initialized");
         }
+        if (this.status >= IOSession.CLOSING) {
+            return;
+        }
         switch (mode) {
         case CLIENT:
             this.sslEngine.setUseClientMode(true);