Author: markt
Date: Mon Sep 30 19:38:05 2013
New Revision: 1527742
URL: http://svn.apache.org/r1527742
Log:
Switch to destroySocket in a few places where it is safe to do so.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1527733
Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1527742&r1=1527741&r2=1527742&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Mon
Sep 30 19:38:05 2013
@@ -907,7 +907,8 @@ public class AprEndpoint extends Abstrac
/*
* This method should only be called if there is no chance that the socket
- * is currently being used by the Poller.
+ * is currently being used by the Poller. It is generally a bad idea to
call
+ * this directly from a known error condition.
*/
private void destroySocket(long socket) {
connections.remove(Long.valueOf(socket));
@@ -990,12 +991,14 @@ public class AprEndpoint extends Abstrac
if (running && !paused) {
// Hand this socket off to an appropriate processor
if (!processSocketWithOptions(socket)) {
- // Close socket and pool right away
+ // Close socket right away
closeSocket(socket);
}
} else {
- // Close socket and pool right away
- closeSocket(socket);
+ // Close socket right away
+ // No code path could have added the socket to the
+ // Poller so use destroySocket()
+ destroySocket(socket);
}
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
@@ -1400,7 +1403,9 @@ public class AprEndpoint extends Abstrac
connections.get(Long.valueOf(info.socket)).isComet();
if (!comet || (comet && !processSocket(
info.socket, SocketStatus.STOP))) {
- closeSocket(info.socket);
+ // Poller isn't running at this point so use
destroySocket()
+ // directly
+ destroySocket(info.socket);
}
info = addList.get();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]