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

commit 87bb2e0f0c2d97d4be050702c06aff45eaf9bee6
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Mar 15 18:57:37 2021 +0000

    Expose the actual frameTypeId for unknown frames
---
 java/org/apache/coyote/http2/Http2AsyncParser.java |  2 +-
 java/org/apache/coyote/http2/Http2Parser.java      | 24 ++++++++++++++++------
 .../apache/coyote/http2/Http2UpgradeHandler.java   |  2 +-
 test/org/apache/coyote/http2/Http2TestBase.java    |  4 ++--
 4 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/java/org/apache/coyote/http2/Http2AsyncParser.java 
b/java/org/apache/coyote/http2/Http2AsyncParser.java
index 754cc96..f1b1f2d 100644
--- a/java/org/apache/coyote/http2/Http2AsyncParser.java
+++ b/java/org/apache/coyote/http2/Http2AsyncParser.java
@@ -275,7 +275,7 @@ class Http2AsyncParser extends Http2Parser {
                                 readContinuationFrame(streamId, flags, 
payloadSize, payload);
                                 break;
                             case UNKNOWN:
-                                readUnknownFrame(streamId, frameType, flags, 
payloadSize, payload);
+                                readUnknownFrame(streamId, frameTypeId, flags, 
payloadSize, payload);
                             }
                         }
                         // See if there is a new 9 byte header and continue 
parsing if possible
diff --git a/java/org/apache/coyote/http2/Http2Parser.java 
b/java/org/apache/coyote/http2/Http2Parser.java
index b1c8e15..7e3a86d 100644
--- a/java/org/apache/coyote/http2/Http2Parser.java
+++ b/java/org/apache/coyote/http2/Http2Parser.java
@@ -124,7 +124,7 @@ class Http2Parser {
             readContinuationFrame(streamId, flags, payloadSize, null);
             break;
         case UNKNOWN:
-            readUnknownFrame(streamId, frameType, flags, payloadSize, null);
+            readUnknownFrame(streamId, frameTypeId, flags, payloadSize, null);
         }
 
         return true;
@@ -516,15 +516,15 @@ class Http2Parser {
     }
 
 
-    protected void readUnknownFrame(int streamId, FrameType frameType, int 
flags, int payloadSize, ByteBuffer buffer)
+    protected void readUnknownFrame(int streamId, int frameTypeId, int flags, 
int payloadSize, ByteBuffer buffer)
             throws IOException {
         try {
-            swallowPayload(streamId, frameType.getId(), payloadSize, false, 
buffer);
+            swallowPayload(streamId, frameTypeId, payloadSize, false, buffer);
         } catch (ConnectionException e) {
             // Will never happen because swallow() is called with mustBeZero 
set
             // to false
         }
-        output.swallowed(streamId, frameType, flags, payloadSize);
+        output.onSwallowedUnknownFrame(streamId, frameTypeId, flags, 
payloadSize);
     }
 
 
@@ -776,7 +776,19 @@ class Http2Parser {
         // Window size
         void incrementWindowSize(int streamId, int increment) throws 
Http2Exception;
 
-        // Testing
-        void swallowed(int streamId, FrameType frameType, int flags, int size) 
throws IOException;
+        /**
+         * Notification triggered when the parser swallows the payload of an
+         * unknown frame.
+         *
+         * @param streamId      The stream on which the swallowed frame was
+         *                      received
+         * @param frameTypeId   The (unrecognised) type of swallowed frame
+         * @param flags         The flags set in the header of the swallowed
+         *                      frame
+         * @param size          The payload size of the swallowed frame
+         *
+         * @throws IOException
+         */
+        void onSwallowedUnknownFrame(int streamId, int frameTypeId, int flags, 
int size) throws IOException;
     }
 }
diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java 
b/java/org/apache/coyote/http2/Http2UpgradeHandler.java
index f39c3c1..1a38f4d 100644
--- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java
+++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java
@@ -1768,7 +1768,7 @@ class Http2UpgradeHandler extends AbstractStream 
implements InternalHttpUpgradeH
 
 
     @Override
-    public void swallowed(int streamId, FrameType frameType, int flags, int 
size)
+    public void onSwallowedUnknownFrame(int streamId, int frameTypeId, int 
flags, int size)
             throws IOException {
         // NO-OP.
     }
diff --git a/test/org/apache/coyote/http2/Http2TestBase.java 
b/test/org/apache/coyote/http2/Http2TestBase.java
index ea1a9ac..012064b 100644
--- a/test/org/apache/coyote/http2/Http2TestBase.java
+++ b/test/org/apache/coyote/http2/Http2TestBase.java
@@ -1172,10 +1172,10 @@ public abstract class Http2TestBase extends 
TomcatBaseTest {
 
 
         @Override
-        public void swallowed(int streamId, FrameType frameType, int flags, 
int size) {
+        public void onSwallowedUnknownFrame(int streamId, int frameTypeId, int 
flags, int size) {
             trace.append(streamId);
             trace.append(",");
-            trace.append(frameType);
+            trace.append(frameTypeId);
             trace.append(",");
             trace.append(flags);
             trace.append(",");


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

Reply via email to