This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/master by this push:
     new 3d73e35  Refactor stream lookups
3d73e35 is described below

commit 3d73e35518c0f16439c33f14533399cc7b60525c
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Fri Mar 12 14:44:02 2021 +0000

    Refactor stream lookups
---
 .../apache/coyote/http2/Http2UpgradeHandler.java   | 46 ++++++++++++++--------
 1 file changed, 30 insertions(+), 16 deletions(-)

diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java 
b/java/org/apache/coyote/http2/Http2UpgradeHandler.java
index bf48daf..c02d3b0 100644
--- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java
+++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java
@@ -1091,27 +1091,39 @@ class Http2UpgradeHandler extends AbstractStream 
implements InternalHttpUpgradeH
     }
 
 
-    private Stream getStream(int streamId, boolean unknownIsError) throws 
ConnectionException {
+    private Stream getStream(int streamId) {
         Integer key = Integer.valueOf(streamId);
         AbstractStream result = streams.get(key);
         if (result instanceof Stream) {
             return (Stream) result;
         }
-        if (unknownIsError) {
+        return null;
+    }
+
+
+    private Stream getStream(int streamId, boolean unknownIsError) throws 
ConnectionException {
+        Stream result = getStream(streamId);
+        if (result == null && unknownIsError) {
             // Stream has been closed and removed from the map
-            throw new 
ConnectionException(sm.getString("upgradeHandler.stream.closed", 
key.toString()),
+            throw new 
ConnectionException(sm.getString("upgradeHandler.stream.closed", 
Integer.toString(streamId)),
                     Http2Error.PROTOCOL_ERROR);
         }
-        return null;
+        return result;
     }
 
 
-    private AbstractNonZeroStream getStreamMayBeClosed(int streamId, boolean 
unknownIsError) throws ConnectionException {
+    private AbstractNonZeroStream getAbstractNonZeroStream(int streamId) {
         Integer key = Integer.valueOf(streamId);
-        AbstractNonZeroStream result = streams.get(key);
+        return streams.get(key);
+    }
+
+
+    private AbstractNonZeroStream getAbstractNonZeroStream(int streamId, 
boolean unknownIsError)
+            throws ConnectionException {
+        AbstractNonZeroStream result = getAbstractNonZeroStream(streamId);
         if (result == null && unknownIsError) {
             // Stream has been closed and removed from the map
-            throw new 
ConnectionException(sm.getString("upgradeHandler.stream.closed", 
key.toString()),
+            throw new 
ConnectionException(sm.getString("upgradeHandler.stream.closed", 
Integer.toString(streamId)),
                     Http2Error.PROTOCOL_ERROR);
         }
         return result;
@@ -1454,7 +1466,7 @@ class Http2UpgradeHandler extends AbstractStream 
implements InternalHttpUpgradeH
             }
         }
 
-        AbstractNonZeroStream abstractNonZeroStream = 
getStreamMayBeClosed(streamId, true);
+        AbstractNonZeroStream abstractNonZeroStream = 
getAbstractNonZeroStream(streamId, true);
         if (abstractNonZeroStream instanceof Stream) {
             Stream stream = (Stream) abstractNonZeroStream;
             stream.checkState(FrameType.DATA);
@@ -1469,7 +1481,7 @@ class Http2UpgradeHandler extends AbstractStream 
implements InternalHttpUpgradeH
 
     @Override
     public void endRequestBodyFrame(int streamId) throws Http2Exception {
-        AbstractNonZeroStream abstractNonZeroStream = 
getStreamMayBeClosed(streamId, true);
+        AbstractNonZeroStream abstractNonZeroStream = 
getAbstractNonZeroStream(streamId, true);
         if (abstractNonZeroStream instanceof Stream) {
             ((Stream) 
abstractNonZeroStream).getInputBuffer().onDataAvailable();
         }
@@ -1478,7 +1490,8 @@ class Http2UpgradeHandler extends AbstractStream 
implements InternalHttpUpgradeH
 
     @Override
     public void receivedEndOfStream(int streamId) throws ConnectionException {
-        AbstractNonZeroStream abstractNonZeroStream = 
getStreamMayBeClosed(streamId, connectionState.get().isNewStreamAllowed());
+        AbstractNonZeroStream abstractNonZeroStream =
+                getAbstractNonZeroStream(streamId, 
connectionState.get().isNewStreamAllowed());
         if (abstractNonZeroStream instanceof Stream) {
             Stream stream = (Stream) abstractNonZeroStream;
             stream.receivedEndOfStream();
@@ -1492,7 +1505,7 @@ class Http2UpgradeHandler extends AbstractStream 
implements InternalHttpUpgradeH
     @Override
     public void swallowedPadding(int streamId, int paddingLength) throws
             ConnectionException, IOException {
-        AbstractNonZeroStream abstractNonZeroStream = 
getStreamMayBeClosed(streamId, true);
+        AbstractNonZeroStream abstractNonZeroStream = 
getAbstractNonZeroStream(streamId, true);
         // +1 is for the payload byte used to define the padding length
         writeWindowUpdate(abstractNonZeroStream, paddingLength + 1, false);
     }
@@ -1555,11 +1568,11 @@ class Http2UpgradeHandler extends AbstractStream 
implements InternalHttpUpgradeH
 
         increaseOverheadCount();
 
-        AbstractNonZeroStream abstractNonZeroStream = 
getStreamMayBeClosed(streamId, false);
+        AbstractNonZeroStream abstractNonZeroStream = 
getAbstractNonZeroStream(streamId);
         if (abstractNonZeroStream == null) {
             abstractNonZeroStream = createRemoteStream(streamId);
         }
-        AbstractStream parentStream = getStreamMayBeClosed(parentStreamId, 
false);
+        AbstractStream parentStream = getAbstractNonZeroStream(parentStreamId);
         if (parentStream == null) {
             parentStream = this;
         }
@@ -1590,7 +1603,8 @@ class Http2UpgradeHandler extends AbstractStream 
implements InternalHttpUpgradeH
 
     @Override
     public void headersEnd(int streamId) throws Http2Exception {
-        AbstractNonZeroStream abstractNonZeroStream = 
getStreamMayBeClosed(streamId, connectionState.get().isNewStreamAllowed());
+        AbstractNonZeroStream abstractNonZeroStream =
+                getAbstractNonZeroStream(streamId, 
connectionState.get().isNewStreamAllowed());
         if (abstractNonZeroStream instanceof Stream) {
             setMaxProcessedStream(streamId);
             Stream stream = (Stream) abstractNonZeroStream;
@@ -1628,7 +1642,7 @@ class Http2UpgradeHandler extends AbstractStream 
implements InternalHttpUpgradeH
             log.debug(sm.getString("upgradeHandler.reset.receive", 
getConnectionId(), Integer.toString(streamId),
                     Long.toString(errorCode)));
         }
-        AbstractNonZeroStream abstractNonZeroStream = 
getStreamMayBeClosed(streamId, true);
+        AbstractNonZeroStream abstractNonZeroStream = 
getAbstractNonZeroStream(streamId, true);
         abstractNonZeroStream.checkState(FrameType.RST);
         if (abstractNonZeroStream instanceof Stream) {
             Stream stream = (Stream) abstractNonZeroStream;
@@ -1734,7 +1748,7 @@ class Http2UpgradeHandler extends AbstractStream 
implements InternalHttpUpgradeH
 
             incrementWindowSize(increment);
         } else {
-            AbstractNonZeroStream stream = getStreamMayBeClosed(streamId, 
true);
+            AbstractNonZeroStream stream = getAbstractNonZeroStream(streamId, 
true);
 
             // Check for small increments which are inefficient
             if (average < overheadThreshold) {


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

Reply via email to