Author: markt
Date: Mon Oct 7 21:44:09 2013
New Revision: 1530081
URL: http://svn.apache.org/r1530081
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55633 for APR.
If the socket was registered for read and write and only one occurred, the
registration for the other event was lost. Ensure that the socket is
re-registered with the Poller when necessary.
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=1530081&r1=1530080&r2=1530081&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Mon Oct 7
21:44:09 2013
@@ -1881,8 +1881,17 @@ public class AprEndpoint extends Abstrac
((desc[n*2] & Poll.APR_POLLOUT) ==
Poll.APR_POLLOUT) &&
!processSocket(desc[n*2+1],
SocketStatus.OPEN_WRITE)) {
// Close socket and clear pool
+ error = true;
closeSocket(desc[n*2+1]);
}
+ if (!error) {
+ // If socket was registered for
multiple events but
+ // only some of the occurred,
re-register for the
+ // remaining events.
+ if (wrapper.pollerFlags != 0) {
+ add(desc[n*2+1], 1,
wrapper.pollerFlags);
+ }
+ }
} else {
// Unknown event
getLog().warn(sm.getString(
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]