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/13 12:19:27 UTC

svn commit: r1824119 - in /tomcat/trunk/java/org/apache/coyote/http2: Http2AsyncParser.java Http2Parser.java

Author: remm
Date: Tue Feb 13 12:19:27 2018
New Revision: 1824119

URL: http://svn.apache.org/viewvc?rev=1824119&view=rev
Log:
Refactoring of swallow to reduce duplication.

Modified:
    tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java
    tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.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=1824119&r1=1824118&r2=1824119&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncParser.java Tue Feb 13 12:19:27 2018
@@ -88,39 +88,6 @@ class Http2AsyncParser extends Http2Pars
         }
     }
 
-    @Override
-    protected void swallow(int streamId, int len, boolean mustBeZero, ByteBuffer buffer)
-            throws IOException, ConnectionException {
-        if (log.isDebugEnabled()) {
-            log.debug(sm.getString("http2Parser.swallow.debug", connectionId,
-                    Integer.toString(streamId), Integer.toString(len)));
-        }
-        if (len == 0) {
-            return;
-        }
-        if (!mustBeZero) {
-            buffer.position(buffer.position() + len);
-        } else {
-            int read = 0;
-            byte[] buf = new byte[1024];
-            while (read < len) {
-                int thisTime = Math.min(buf.length, len - read);
-                buffer.get(buf, 0, thisTime);
-                // Validate the padding is zero since receiving non-zero padding
-                // is a strong indication of either a faulty client or a server
-                // side bug.
-                for (int i = 0; i < thisTime; i++) {
-                    if (buf[i] != 0) {
-                        throw new ConnectionException(sm.getString("http2Parser.nonZeroPadding",
-                                connectionId, Integer.toString(streamId)), Http2Error.PROTOCOL_ERROR);
-                    }
-                }
-                read += thisTime;
-            }
-        }
-    }
-
-
     private class FrameCompletionCheck implements CompletionCheck {
 
         private final FrameCompletionHandler handler;

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=1824119&r1=1824118&r2=1824119&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java Tue Feb 13 12:19:27 2018
@@ -527,23 +527,31 @@ class Http2Parser {
         if (len == 0) {
             return;
         }
-        int read = 0;
-        byte[] buffer = new byte[1024];
-        while (read < len) {
-            int thisTime = Math.min(buffer.length, len - read);
-            input.fill(true, buffer, 0, thisTime);
-            if (mustBeZero) {
-                // Validate the padding is zero since receiving non-zero padding
-                // is a strong indication of either a faulty client or a server
-                // side bug.
-                for (int i = 0; i < thisTime; i++) {
-                    if (buffer[i] != 0) {
-                        throw new ConnectionException(sm.getString("http2Parser.nonZeroPadding",
-                                connectionId, Integer.toString(streamId)), Http2Error.PROTOCOL_ERROR);
+        if (!mustBeZero && byteBuffer != null) {
+            byteBuffer.position(byteBuffer.position() + len);
+        } else {
+            int read = 0;
+            byte[] buffer = new byte[1024];
+            while (read < len) {
+                int thisTime = Math.min(buffer.length, len - read);
+                if (byteBuffer == null) {
+                    input.fill(true, buffer, 0, thisTime);
+                } else {
+                    byteBuffer.get(buffer, 0, thisTime);
+                }
+                if (mustBeZero) {
+                    // Validate the padding is zero since receiving non-zero padding
+                    // is a strong indication of either a faulty client or a server
+                    // side bug.
+                    for (int i = 0; i < thisTime; i++) {
+                        if (buffer[i] != 0) {
+                            throw new ConnectionException(sm.getString("http2Parser.nonZeroPadding",
+                                    connectionId, Integer.toString(streamId)), Http2Error.PROTOCOL_ERROR);
+                        }
                     }
                 }
+                read += thisTime;
             }
-            read += thisTime;
         }
     }
 



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