Author: markt
Date: Fri May 24 14:59:45 2013
New Revision: 1486085

URL: http://svn.apache.org/r1486085
Log:
Non-blocking ends when async ends so ensure listeners are cleared

Modified:
    tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java

Modified: tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java?rev=1486085&r1=1486084&r2=1486085&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java (original)
+++ tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java Fri May 24 
14:59:45 2013
@@ -236,6 +236,7 @@ public class AsyncStateMachine<S> {
                 state == AsyncState.ERROR) {
             state = AsyncState.MUST_COMPLETE;
         } else if (state == AsyncState.READ_WRITE_OP) {
+            clearNonBlockingListeners();
             state = AsyncState.MUST_COMPLETE;
         } else {
             throw new IllegalStateException(
@@ -297,6 +298,7 @@ public class AsyncStateMachine<S> {
         if (state == AsyncState.DISPATCHED ||
                 state == AsyncState.TIMING_OUT ||
                 state == AsyncState.READ_WRITE_OP) {
+            clearNonBlockingListeners();
             state = AsyncState.ERROR;
         } else {
             throw new IllegalStateException(
@@ -351,6 +353,12 @@ public class AsyncStateMachine<S> {
     }
 
 
+    private void clearNonBlockingListeners() {
+        processor.getRequest().listener = null;
+        processor.getRequest().getResponse().listener = null;
+    }
+
+
     private static class PrivilegedSetTccl implements PrivilegedAction<Void> {
 
         private ClassLoader cl;



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

Reply via email to