From 89afb1ec9d0cadc361093cc839f80267d7f784e6 Mon Sep 17 00:00:00 2001 From: markt Date: Fri, 17 Jun 2011 22:01:35 +0000 Subject: [PATCH] Connector re-factoring Align Ajp impl with Http impl for BIO git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1137048 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/coyote/ajp/AjpProtocol.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/java/org/apache/coyote/ajp/AjpProtocol.java b/java/org/apache/coyote/ajp/AjpProtocol.java index bcbb597f6..ab1e14984 100644 --- a/java/org/apache/coyote/ajp/AjpProtocol.java +++ b/java/org/apache/coyote/ajp/AjpProtocol.java @@ -135,13 +135,24 @@ public class AjpProtocol extends AbstractAjpProtocol { 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(); -- 2.11.0