Author: markt Date: Mon Mar 5 21:35:53 2018 New Revision: 1825943 URL: http://svn.apache.org/viewvc?rev=1825943&view=rev Log: (empty)
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java tomcat/trunk/webapps/docs/changelog.xml 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=1825943&r1=1825942&r2=1825943&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Mon Mar 5 21:35:53 2018 @@ -1642,31 +1642,30 @@ public class AprEndpoint extends Abstrac timeouts.remove(info.socket); AprSocketWrapper wrapper = connections.get( Long.valueOf(info.socket)); - if (wrapper == null) { - continue; - } - if (info.read() || info.write()) { - wrapper.pollerFlags = wrapper.pollerFlags | - (info.read() ? Poll.APR_POLLIN : 0) | - (info.write() ? Poll.APR_POLLOUT : 0); - // A socket can only be added to the poller - // once. Adding it twice will return an error - // which will close the socket. Therefore make - // sure the socket we are about to add isn't in - // the poller. - removeFromPoller(info.socket); - if (!addToPoller(info.socket, wrapper.pollerFlags)) { - closeSocket(info.socket); + if (wrapper != null) { + if (info.read() || info.write()) { + wrapper.pollerFlags = wrapper.pollerFlags | + (info.read() ? Poll.APR_POLLIN : 0) | + (info.write() ? Poll.APR_POLLOUT : 0); + // A socket can only be added to the poller + // once. Adding it twice will return an error + // which will close the socket. Therefore make + // sure the socket we are about to add isn't in + // the poller. + removeFromPoller(info.socket); + if (!addToPoller(info.socket, wrapper.pollerFlags)) { + closeSocket(info.socket); + } else { + timeouts.add(info.socket, + System.currentTimeMillis() + + info.timeout); + } } else { - timeouts.add(info.socket, - System.currentTimeMillis() + - info.timeout); + // Should never happen. + closeSocket(info.socket); + getLog().warn(sm.getString( + "endpoint.apr.pollAddInvalid", info)); } - } else { - // Should never happen. - closeSocket(info.socket); - getLog().warn(sm.getString( - "endpoint.apr.pollAddInvalid", info)); } info = localAddList.get(); } Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1825943&r1=1825942&r2=1825943&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Mon Mar 5 21:35:53 2018 @@ -54,6 +54,13 @@ </fix> </changelog> </subsection> + <subsection name="Coyote"> + <changelog> + <fix> + Avoid potential loop in APR/Native poller. (markt) + </fix> + </changelog> + </subsection> <subsection name="Other"> <changelog> <update> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org