Author: markt Date: Wed Jun 20 11:27:53 2018 New Revision: 1833906 URL: http://svn.apache.org/viewvc?rev=1833906&view=rev Log: Improve tracking of connection closure.
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1833906&r1=1833905&r2=1833906&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Wed Jun 20 11:27:53 2018 @@ -410,7 +410,7 @@ public class Nio2Endpoint extends Abstra private final Semaphore writePending = new Semaphore(1); private boolean writeInterest = false; // Guarded by writeCompletionHandler private boolean writeNotify = false; - private boolean closed = false; + private volatile boolean closed = false; private CompletionHandler<Integer, SocketWrapperBase<Nio2Channel>> awaitBytesHandler = new CompletionHandler<Integer, SocketWrapperBase<Nio2Channel>>() { @@ -842,7 +842,7 @@ public class Nio2Endpoint extends Abstra @Override public boolean isClosed() { - return !getSocket().isOpen(); + return closed || !getSocket().isOpen(); } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=1833906&r1=1833905&r2=1833906&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Wed Jun 20 11:27:53 2018 @@ -501,6 +501,7 @@ public class NioEndpoint extends Abstrac // since it won't have been counted down when the socket // closed. socket.socketWrapper.getEndpoint().countDownConnection(); + ((NioSocketWrapper) socket.socketWrapper).closed = true; } else { final NioSocketWrapper socketWrapper = (NioSocketWrapper) key.attachment(); if (socketWrapper != null) { @@ -682,6 +683,7 @@ public class NioEndpoint extends Abstrac } if (ka != null) { countDownConnection(); + ka.closed = true; } } catch (Throwable e) { ExceptionUtils.handleThrowable(e); @@ -997,6 +999,7 @@ public class NioEndpoint extends Abstrac private volatile SendfileData sendfileData = null; private volatile long lastRead = System.currentTimeMillis(); private volatile long lastWrite = lastRead; + private volatile boolean closed = false; public NioSocketWrapper(NioChannel channel, NioEndpoint endpoint) { super(channel, endpoint); @@ -1138,7 +1141,7 @@ public class NioEndpoint extends Abstrac @Override public boolean isClosed() { - return !getSocket().isOpen(); + return closed || !getSocket().isOpen(); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org