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