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 2018/02/09 15:46:52 UTC

svn commit: r1823670 - /tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java

Author: remm
Date: Fri Feb  9 15:46:52 2018
New Revision: 1823670

URL: http://svn.apache.org/viewvc?rev=1823670&view=rev
Log:
Fix window size reservation deadlock.

Modified:
    tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java

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=1823670&r1=1823669&r2=1823670&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java Fri Feb  9 15:46:52 2018
@@ -226,14 +226,18 @@ class Http2AsyncParser extends Http2Pars
                             readUnknownFrame(streamId, frameType, flags, payloadSize, payload);
                         }
                     }
-                } catch (Exception e) {
+                } catch (StreamException e) {
                     error = e;
+                } catch (Exception e) {
+                    unRead(payload);
+                    failed(e, null);
+                    return;
                 }
                 unRead(payload);
             }
             if (state == CompletionState.DONE) {
                 // The call was not completed inline, so must start reading new frames
-                // or process any error
+                // or process the stream exception
                 upgradeHandler.upgradeDispatch(SocketEvent.OPEN_READ);
             }
         }
@@ -241,10 +245,8 @@ class Http2AsyncParser extends Http2Pars
         @Override
         public void failed(Throwable e, Void attachment) {
             error = e;
-            if (state == CompletionState.DONE) {
-                // The call was not completed inline, so must start reading new frames
-                // or process any error
-                upgradeHandler.upgradeDispatch(SocketEvent.OPEN_READ);
+            if (state == null || state == CompletionState.DONE) {
+                upgradeHandler.upgradeDispatch(SocketEvent.ERROR);
             }
         }
 



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