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