Author: remm
Date: Fri Aug 11 16:01:41 2017
New Revision: 1804813

URL: http://svn.apache.org/viewvc?rev=1804813&view=rev
Log:
Fix possible race condition when using an upgraded connection and setting the 
IO listeners, it now uses the same processing as non upgraded connections.

Modified:
    
tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java
    
tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: 
tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java?rev=1804813&r1=1804812&r2=1804813&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java
 (original)
+++ 
tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java
 Fri Aug 11 16:01:41 2017
@@ -101,6 +101,8 @@ public class UpgradeServletInputStream e
             throw new 
IllegalStateException(sm.getString("upgrade.sis.read.closed"));
         }
 
+        this.listener = listener;
+
         // Container is responsible for first call to onDataAvailable().
         if (ContainerThreadMarker.isContainerThread()) {
             processor.addDispatch(DispatchType.NON_BLOCKING_READ);
@@ -108,7 +110,6 @@ public class UpgradeServletInputStream e
             socketWrapper.registerReadInterest();
         }
 
-        this.listener = listener;
         // Switching to non-blocking. Don't know if data is available.
         ready = null;
     }

Modified: 
tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java?rev=1804813&r1=1804812&r2=1804813&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java
 (original)
+++ 
tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletOutputStream.java
 Fri Aug 11 16:01:41 2017
@@ -112,6 +112,7 @@ public class UpgradeServletOutputStream
         if (closed) {
             throw new 
IllegalStateException(sm.getString("upgrade.sos.write.closed"));
         }
+        this.listener = listener;
         // Container is responsible for first call to onWritePossible().
         synchronized (registeredLock) {
             registered = true;
@@ -123,7 +124,6 @@ public class UpgradeServletOutputStream
             }
         }
 
-        this.listener = listener;
     }
 
 

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1804813&r1=1804812&r2=1804813&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Fri Aug 11 16:01:41 2017
@@ -72,6 +72,10 @@
         Prevent exceptions being thrown during normal shutdown of NIO
         connections. This enables TLS connections to close cleanly. (markt)
       </fix>
+      <fix>
+        Fix possible race condition when setting IO listeners on an upgraded
+        connection. (remm)
+      </fix>
     </changelog>
   </subsection>
 </section>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to