Author: markt Date: Sat Dec 12 20:32:29 2015 New Revision: 1719732 URL: http://svn.apache.org/viewvc?rev=1719732&view=rev Log: Revert r1719532, r1719534 & r1719535 until a better fix can be found for APR's handling of client disconnect.
Modified: tomcat/trunk/java/org/apache/coyote/AbstractProcessorLight.java tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java Modified: tomcat/trunk/java/org/apache/coyote/AbstractProcessorLight.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProcessorLight.java?rev=1719732&r1=1719731&r2=1719732&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/AbstractProcessorLight.java (original) +++ tomcat/trunk/java/org/apache/coyote/AbstractProcessorLight.java Sat Dec 12 20:32:29 2015 @@ -50,7 +50,7 @@ public abstract class AbstractProcessorL } else if (dispatches != null) { DispatchType nextDispatch = dispatches.next(); state = dispatch(nextDispatch.getSocketStatus()); - } else if (status == SocketStatus.DISCONNECT && !isUpgrade()) { + } else if (status == SocketStatus.DISCONNECT) { // Do nothing here, just wait for it to get recycled } else if (isAsync() || isUpgrade() || state == SocketState.ASYNC_END) { state = dispatch(status); 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=1719732&r1=1719731&r2=1719732&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Sat Dec 12 20:32:29 2015 @@ -1706,12 +1706,8 @@ public class AprEndpoint extends Abstrac } wrapper.pollerFlags = wrapper.pollerFlags & ~((int) desc[n*2]); // Check for failed sockets and hand this socket off to a worker - if ((desc[n*2] & Poll.APR_POLLHUP) == Poll.APR_POLLHUP) { - if (!processSocket(desc[n*2+1], SocketStatus.DISCONNECT)) { - // Close socket and clear pool - closeSocket(desc[n*2+1]); - } - } else if(((desc[n*2] & Poll.APR_POLLERR) == Poll.APR_POLLERR) + if (((desc[n*2] & Poll.APR_POLLHUP) == Poll.APR_POLLHUP) + || ((desc[n*2] & Poll.APR_POLLERR) == Poll.APR_POLLERR) || ((desc[n*2] & Poll.APR_POLLNVAL) == Poll.APR_POLLNVAL)) { // Need to trigger error handling. Poller may return error // codes plus the flags it was waiting for or it may just Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java?rev=1719732&r1=1719731&r2=1719732&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java Sat Dec 12 20:32:29 2015 @@ -174,7 +174,6 @@ public class WsHttpUpgradeHandler implem close(cr); } break; - case DISCONNECT: case ERROR: String msg = sm.getString("wsHttpUpgradeHandler.closeOnError"); wsSession.doClose(new CloseReason(CloseCodes.GOING_AWAY, msg), @@ -183,6 +182,7 @@ public class WsHttpUpgradeHandler implem case ASYNC_READ_ERROR: case ASYNC_WRITE_ERROR: case CLOSE_NOW: + case DISCONNECT: case TIMEOUT: return SocketState.CLOSED; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org