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: [email protected]
For additional commands, e-mail: [email protected]