You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2011/06/18 00:01:35 UTC

svn commit: r1137048 - /tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java

Author: markt
Date: Fri Jun 17 22:01:35 2011
New Revision: 1137048

URL: http://svn.apache.org/viewvc?rev=1137048&view=rev
Log:
Connector re-factoring
Align Ajp impl with Http impl for BIO

Modified:
    tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java?rev=1137048&r1=1137047&r2=1137048&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpProtocol.java Fri Jun 17 22:01:35 2011
@@ -135,13 +135,24 @@ public class AjpProtocol extends Abstrac
                     processor = createProcessor();
                 }
 
-                SocketState state = socket.isAsync()?processor.asyncDispatch(status):processor.process(socket);
+                SocketState state = SocketState.CLOSED;
+                do {
+                    if (socket.isAsync() || state == SocketState.ASYNC_END) {
+                        state = processor.asyncDispatch(status);
+                    } else {
+                        state = processor.process(socket);
+                    }
+    
+                    if (processor.isAsync()) {
+                        state = processor.asyncPostProcess();
+                    }
+                } while (state == SocketState.ASYNC_END);
+                // TODO Better to add a new state to the AsyncStateMachine and
+                //      remove ASYNC_END entirely
+
                 if (state == SocketState.LONG) {
                     connections.put(socket, processor);
                     socket.setAsync(true);
-                    // longPoll may change socket state (e.g. to trigger a
-                    // complete or dispatch)
-                    return processor.asyncPostProcess();
                 } else {
                     socket.setAsync(false);
                     processor.recycle();



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