Author: markt Date: Sun Oct 6 21:43:18 2013 New Revision: 1529697 URL: http://svn.apache.org/r1529697 Log: Fix the logic for handling dispatches in a thread-safe manner. May be scope for a more efficient implementation.
Modified: tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapper.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=1529697&r1=1529696&r2=1529697&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java Sun Oct 6 21:43:18 2013 @@ -681,7 +681,7 @@ public abstract class AbstractProtocol<S } } while (state == SocketState.ASYNC_END || state == SocketState.UPGRADING || - dispatches.hasNext() && state != SocketState.CLOSED); + dispatches != null && dispatches.hasNext() && state != SocketState.CLOSED); if (state == SocketState.LONG) { // In the middle of processing a request/response. Keep the Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java?rev=1529697&r1=1529696&r2=1529697&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java Sun Oct 6 21:43:18 2013 @@ -122,7 +122,11 @@ public class SocketWrapper<E> { Iterator<DispatchType> result; synchronized (dispatches) { result = dispatches.iterator(); - dispatches.clear(); + if (result.hasNext()) { + dispatches.clear(); + } else { + result = null; + } } return result; } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org