From: markt Date: Fri, 17 Jun 2011 21:56:58 +0000 (+0000) Subject: Connector re-factoring X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=af3d9796990d901575e0e67cc713d53a57e6987a;p=tomcat7.0 Connector re-factoring First step towards removing SocketState.ASYNC_END from the endpoint Also a few percent faster, at least running the Async unit tests git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1137047 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/coyote/http11/Http11Protocol.java b/java/org/apache/coyote/http11/Http11Protocol.java index 8cc90163d..0ad528394 100644 --- a/java/org/apache/coyote/http11/Http11Protocol.java +++ b/java/org/apache/coyote/http11/Http11Protocol.java @@ -154,19 +154,22 @@ public class Http11Protocol extends AbstractHttp11JsseProtocol { processor.setSSLSupport(null); } - SocketState state; - if (socket.isAsync()) { - state = processor.asyncDispatch(status); - } else { - state = processor.process(socket); - } - - if (processor.isAsync()) { - state = processor.asyncPostProcess(); - } - - if (state == SocketState.LONG || - state == SocketState.ASYNC_END) { + 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); } else {