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/06/20 11:27:53 UTC
svn commit: r1833906 - in /tomcat/trunk/java/org/apache/tomcat/util/net:
Nio2Endpoint.java NioEndpoint.java
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org