You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2017/12/19 19:58:25 UTC
svn commit: r1818711 - in /tomcat/trunk:
java/org/apache/tomcat/util/net/Nio2Endpoint.java webapps/docs/changelog.xml
Author: remm
Date: Tue Dec 19 19:58:25 2017
New Revision: 1818711
URL: http://svn.apache.org/viewvc?rev=1818711&view=rev
Log:
61918: Fix connectionLimitLatch counting when closing an already closed socket. Based on a patch by Ryan Fong.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
tomcat/trunk/webapps/docs/changelog.xml
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=1818711&r1=1818710&r2=1818711&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Tue Dec 19 19:58:25 2017
@@ -362,10 +362,14 @@ public class Nio2Endpoint extends Abstra
ExceptionUtils.handleThrowable(e);
if (log.isDebugEnabled()) log.error("",e);
}
+ Nio2SocketWrapper nio2Socket = (Nio2SocketWrapper) socket;
try {
synchronized (socket.getSocket()) {
- if (socket.getSocket().isOpen()) {
+ if (!nio2Socket.closed) {
+ nio2Socket.closed = true;
countDownConnection();
+ }
+ if (socket.getSocket().isOpen()) {
socket.getSocket().close(true);
}
}
@@ -374,7 +378,6 @@ public class Nio2Endpoint extends Abstra
if (log.isDebugEnabled()) log.error("",e);
}
try {
- Nio2SocketWrapper nio2Socket = (Nio2SocketWrapper) socket;
if (nio2Socket.getSendfileData() != null
&& nio2Socket.getSendfileData().fchannel != null
&& nio2Socket.getSendfileData().fchannel.isOpen()) {
@@ -407,6 +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 CompletionHandler<Integer, SocketWrapperBase<Nio2Channel>> awaitBytesHandler
= new CompletionHandler<Integer, SocketWrapperBase<Nio2Channel>>() {
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1818711&r1=1818710&r2=1818711&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Dec 19 19:58:25 2017
@@ -71,6 +71,10 @@
Correctly handle EOF when <code>ServletInputStream.isReady()</code> is
called. (markt)
</fix>
+ <fix>
+ <bug>61918</bug>: Fix connectionLimitLatch counting when closing an
+ already closed socket. Based on a patch by Ryan Fong. (remm)
+ </fix>
</changelog>
</subsection>
<subsection name="Jasper">
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org