Author: markt Date: Fri Dec 28 23:33:32 2012 New Revision: 1426662 URL: http://svn.apache.org/viewvc?rev=1426662&view=rev Log: Make distinction between wrapper and socket clearer It is the socket that is the key for the connections map, not the processor
Modified: tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java Modified: tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java?rev=1426662&r1=1426661&r2=1426662&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java Fri Dec 28 23:33:32 2012 @@ -579,9 +579,10 @@ public abstract class AbstractProtocol i } - public SocketState process(SocketWrapper<S> socket, + public SocketState process(SocketWrapper<S> wrapper, SocketStatus status) { - Processor<S> processor = connections.get(socket.getSocket()); + S socket = wrapper.getSocket(); + Processor<S> processor = connections.get(socket); if (status == SocketStatus.DISCONNECT && processor == null) { //nothing more to be done endpoint requested a close @@ -589,7 +590,7 @@ public abstract class AbstractProtocol i return SocketState.CLOSED; } - socket.setAsync(false); + wrapper.setAsync(false); try { if (processor == null) { @@ -599,7 +600,7 @@ public abstract class AbstractProtocol i processor = createProcessor(); } - initSsl(socket, processor); + initSsl(wrapper, processor); SocketState state = SocketState.CLOSED; do { @@ -616,7 +617,7 @@ public abstract class AbstractProtocol i } else if (processor.isUpgrade()) { state = processor.upgradeDispatch(status); } else { - state = processor.process(socket); + state = processor.process(wrapper); } if (state != SocketState.CLOSED && processor.isAsync()) { @@ -628,14 +629,14 @@ public abstract class AbstractProtocol i javax.servlet.http.ProtocolHandler httpUpgradeHandler = processor.getHttpUpgradeHandler(); // Release the Http11 processor to be re-used - release(socket, processor, false, false); + release(wrapper, processor, false, false); // Create the light-weight upgrade processor processor = createUpgradeProcessor( - socket, httpUpgradeHandler); - socket.setUpgraded(true); + wrapper, httpUpgradeHandler); + wrapper.setUpgraded(true); } if (getLog().isDebugEnabled()) { - getLog().debug("Socket: [" + socket + + getLog().debug("Socket: [" + wrapper + "], Status in: [" + status + "], State out: [" + state + "]"); } @@ -646,29 +647,29 @@ public abstract class AbstractProtocol i // In the middle of processing a request/response. Keep the // socket associated with the processor. Exact requirements // depend on type of long poll - connections.put(socket.getSocket(), processor); - longPoll(socket, processor); + connections.put(socket, processor); + longPoll(wrapper, processor); } else if (state == SocketState.OPEN) { // In keep-alive but between requests. OK to recycle // processor. Continue to poll for the next request. - connections.remove(processor); - release(socket, processor, false, true); + connections.remove(socket); + release(wrapper, processor, false, true); } else if (state == SocketState.SENDFILE) { // Sendfile in progress. If it fails, the socket will be // closed. If it works, the socket will be re-added to the // poller - connections.remove(processor); - release(socket, processor, false, false); + connections.remove(socket); + release(wrapper, processor, false, false); } else if (state == SocketState.UPGRADED) { // Need to keep the connection associated with the processor - connections.put(socket.getSocket(), processor); - longPoll(socket, processor); + connections.put(socket, processor); + longPoll(wrapper, processor); } else { // Connection closed. OK to recycle the processor. Upgrade // processors are not recycled. - connections.remove(processor); + connections.remove(socket); if (!processor.isUpgrade()) { - release(socket, processor, true, false); + release(wrapper, processor, true, false); } } return state; @@ -692,9 +693,12 @@ public abstract class AbstractProtocol i getLog().error( sm.getString("abstractConnectionHandler.error"), e); } + // Make sure socket/processor is removed from the list of current + // connections + connections.remove(socket); // Don't try to add upgrade processors back into the pool if (processor !=null && !processor.isUpgrade()) { - release(socket, processor, true, false); + release(wrapper, processor, true, false); } return SocketState.CLOSED; } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org