Author: markt
Date: Thu Apr 13 13:50:22 2017
New Revision: 1791253

URL: http://svn.apache.org/viewvc?rev=1791253&view=rev
Log:
Fix a theoretical problem where the connection count could exceed the limit 
during shutdown.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
    tomcat/trunk/java/org/apache/tomcat/util/net/Acceptor.java
    tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
    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/AbstractEndpoint.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java?rev=1791253&r1=1791252&r2=1791253&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java Thu Apr 
13 13:50:22 2017
@@ -986,6 +986,7 @@ public abstract class AbstractEndpoint<S
     public void pause() {
         if (running && !paused) {
             paused = true;
+            releaseConnectionLatch();
             unlockAccept();
             getHandler().pause();
         }
@@ -1026,7 +1027,7 @@ public abstract class AbstractEndpoint<S
         return connectionLimitLatch;
     }
 
-    protected void releaseConnectionLatch() {
+    private void releaseConnectionLatch() {
         LimitLatch latch = connectionLimitLatch;
         if (latch!=null) latch.releaseAll();
         connectionLimitLatch = null;

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Acceptor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Acceptor.java?rev=1791253&r1=1791252&r2=1791253&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/Acceptor.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/Acceptor.java Thu Apr 13 
13:50:22 2017
@@ -82,6 +82,12 @@ public class Acceptor<U> implements Runn
                 //if we have reached max connections, wait
                 endpoint.countUpOrAwaitConnection();
 
+                // Endpoint might have been paused while waiting for latch
+                // If that is the case, don't accept new connections
+                if (endpoint.isPaused()) {
+                    continue;
+                }
+
                 U socket = null;
                 try {
                     // Accept the next incoming connection from the server

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=1791253&r1=1791252&r2=1791253&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Thu Apr 13 
13:50:22 2017
@@ -625,7 +625,6 @@ public class AprEndpoint extends Abstrac
      */
     @Override
     public void stopInternal() {
-        releaseConnectionLatch();
         if (!paused) {
             pause();
         }

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=1791253&r1=1791252&r2=1791253&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Apr 13 
13:50:22 2017
@@ -190,7 +190,6 @@ public class Nio2Endpoint extends Abstra
      */
     @Override
     public void stopInternal() {
-        releaseConnectionLatch();
         if (!paused) {
             pause();
         }

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=1791253&r1=1791252&r2=1791253&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Thu Apr 13 
13:50:22 2017
@@ -267,7 +267,6 @@ public class NioEndpoint extends Abstrac
      */
     @Override
     public void stopInternal() {
-        releaseConnectionLatch();
         if (!paused) {
             pause();
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to