Author: markt
Date: Thu Mar 21 21:01:32 2013
New Revision: 1459523

URL: http://svn.apache.org/r1459523
Log:
Fix a JVM crash with the unit tests on Windows.
Only add the socket back to the poller if the poller did not report an error in 
the previous poll.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1459523&r1=1459522&r2=1459523&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Thu Mar 21 
21:01:32 2013
@@ -1629,9 +1629,6 @@ public class AprEndpoint extends Abstrac
                                 AprSocketWrapper wrapper = connections.get(
                                         Long.valueOf(desc[n*2+1]));
                                 wrapper.pollerFlags = wrapper.pollerFlags & 
~((int) desc[n*2]);
-                                if (wrapper.pollerFlags != 0) {
-                                    add(desc[n*2+1], 1, wrapper.pollerFlags);
-                                }
                                 // Check for failed sockets and hand this 
socket off to a worker
                                 if (wrapper.isComet()) {
                                     // Event processes either a read or a 
write depending on what the poller returns
@@ -1643,11 +1640,17 @@ public class AprEndpoint extends Abstrac
                                             destroySocket(desc[n*2+1]);
                                         }
                                     } else if ((desc[n*2] & Poll.APR_POLLIN) 
== Poll.APR_POLLIN) {
+                                        if (wrapper.pollerFlags != 0) {
+                                            add(desc[n*2+1], 1, 
wrapper.pollerFlags);
+                                        }
                                         if (!processSocket(desc[n*2+1], 
SocketStatus.OPEN_READ)) {
                                             // Close socket and clear pool
                                             destroySocket(desc[n*2+1]);
                                         }
                                     } else if ((desc[n*2] & Poll.APR_POLLOUT) 
== Poll.APR_POLLOUT) {
+                                        if (wrapper.pollerFlags != 0) {
+                                            add(desc[n*2+1], 1, 
wrapper.pollerFlags);
+                                        }
                                         if (!processSocket(desc[n*2+1], 
SocketStatus.OPEN_WRITE)) {
                                             // Close socket and clear pool
                                             destroySocket(desc[n*2+1]);



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to