Author: markt
Date: Thu Mar  8 11:58:01 2018
New Revision: 1826209

URL: http://svn.apache.org/viewvc?rev=1826209&view=rev
Log:
Refactor the check for a paused connector to consistently prevent new streams 
from being created after the connector has been paused.
This appears to fix the HTTP/2 NIO2 unit test failure. At least it does on the 
machine on which I could reproduce it.

Modified:
    tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java
    tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java
    tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java?rev=1826209&r1=1826208&r2=1826209&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java Thu Mar  8 
11:58:01 2018
@@ -133,11 +133,6 @@ class Http2AsyncParser extends Http2Pars
             }
 
             if (buffers[1].position() < handler.payloadSize) {
-                try {
-                    upgradeHandler.checkPauseState();
-                } catch (IOException e) {
-                    error = e;
-                }
                 return CompletionHandlerCall.CONTINUE;
             }
 

Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java?rev=1826209&r1=1826208&r2=1826209&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java Thu Mar  8 
11:58:01 2018
@@ -718,7 +718,8 @@ class Http2Parser {
         void swallowedPadding(int streamId, int paddingLength) throws 
ConnectionException, IOException;
 
         // Header frames
-        HeaderEmitter headersStart(int streamId, boolean headersEndStream) 
throws Http2Exception;
+        HeaderEmitter headersStart(int streamId, boolean headersEndStream)
+                throws Http2Exception, IOException;
         void headersEnd(int streamId) throws ConnectionException;
 
         // Priority frames (also headers)

Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java?rev=1826209&r1=1826208&r2=1826209&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Thu Mar  
8 11:58:01 2018
@@ -305,8 +305,6 @@ class Http2UpgradeHandler extends Abstra
         try {
             pingManager.sendPing(false);
 
-            checkPauseState();
-
             switch(status) {
             case OPEN_READ:
                 try {
@@ -1234,7 +1232,13 @@ class Http2UpgradeHandler extends Abstra
 
 
     @Override
-    public HeaderEmitter headersStart(int streamId, boolean headersEndStream) 
throws Http2Exception {
+    public HeaderEmitter headersStart(int streamId, boolean headersEndStream)
+            throws Http2Exception, IOException {
+
+        // Check the pause state before processing headers since the pause 
state
+        // determines if a new stream is created or if this stream is ignored.
+        checkPauseState();
+
         if (connectionState.get().isNewStreamAllowed()) {
             Stream stream = getStream(streamId, false);
             if (stream == null) {

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1826209&r1=1826208&r2=1826209&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Mar  8 11:58:01 2018
@@ -63,6 +63,10 @@
         Ensure streams that are received but not processed are excluded from 
the
         tracking of maximum ID of processed streams. (markt)
       </fix>
+      <fix>
+        Refactor the check for a paused connector to consistently prevent new
+        streams from being created after the connector has been paused. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Other">



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

Reply via email to