You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/03/05 21:35:54 UTC
svn commit: r1825943 - in /tomcat/trunk:
java/org/apache/tomcat/util/net/AprEndpoint.java webapps/docs/changelog.xml
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org