You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/11/23 13:28:59 UTC

svn commit: r1715783 - in /tomcat/trunk/java/org/apache/coyote/http2: HpackEncoder.java Http2UpgradeHandler.java LocalStrings.properties Stream.java

Author: markt
Date: Mon Nov 23 12:28:59 2015
New Revision: 1715783

URL: http://svn.apache.org/viewvc?rev=1715783&view=rev
Log:
HTTP/2 debug logging improvements for Server push

Modified:
    tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java
    tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
    tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties
    tomcat/trunk/java/org/apache/coyote/http2/Stream.java

Modified: tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java?rev=1715783&r1=1715782&r2=1715783&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java Mon Nov 23 12:28:59 2015
@@ -26,13 +26,19 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.http.MimeHeaders;
+import org.apache.tomcat.util.res.StringManager;
 
 /**
  * Encoder for HPACK frames.
  */
 public class HpackEncoder {
 
+    private static final Log log = LogFactory.getLog(HpackEncoder.class);
+    private static final StringManager sm = StringManager.getManager(HpackEncoder.class);
+
     public static final HpackHeaderFunction DEFAULT_HEADER_FUNCTION = new HpackHeaderFunction() {
         @Override
         public boolean shouldUseIndexing(String headerName, String value) {
@@ -141,19 +147,24 @@ public class HpackEncoder {
                 }
             }
             if (!skip) {
-
-                    int required = 11 + headerName.length(); //we use 11 to make sure we have enough room for the variable length integers
-
                     String val = headers.getValue(it).toString();
+
+                    if (log.isDebugEnabled()) {
+                        log.debug(sm.getString("hpackEncoder.encodeHeader", headerName, val));
+                    }
                     TableEntry tableEntry = findInTable(headerName, val);
 
-                    required += (1 + val.length());
+                    // We use 11 to make sure we have enough room for the
+                    // variable length integers
+                    int required = 11 + headerName.length() + 1 + val.length();
 
                     if (target.remaining() < required) {
                         this.headersIterator = it;
                         return State.UNDERFLOW;
                     }
-                    boolean canIndex = hpackHeaderFunction.shouldUseIndexing(headerName, val) && (headerName.length() + val.length() + 32) < maxTableSize; //only index if it will fit
+                    // Only index if it will fit
+                    boolean canIndex = hpackHeaderFunction.shouldUseIndexing(headerName, val) &&
+                            (headerName.length() + val.length() + 32) < maxTableSize;
                     if (tableEntry == null && canIndex) {
                         //add the entry to the dynamic table
                         target.put((byte) (1 << 6));

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=1715783&r1=1715782&r2=1715783&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Mon Nov 23 12:28:59 2015
@@ -551,7 +551,7 @@ public class Http2UpgradeHandler extends
             throws IOException {
         if (log.isDebugEnabled()) {
             log.debug(sm.getString("upgradeHandler.writePushHeaders", connectionId,
-                    stream.getIdentifier()));
+                    stream.getIdentifier(), Integer.toString(pushedStreamId)));
         }
         // This ensures the Stream processing thread has control of the socket.
         synchronized (socketWrapper) {

Modified: tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties?rev=1715783&r1=1715782&r2=1715783&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties Mon Nov 23 12:28:59 2015
@@ -35,6 +35,8 @@ hpack.integerEncodedOverTooManyOctets=HP
 
 hpackdecoder.zeroNotValidHeaderTableIndex=Zero is not a valid header table index
 
+hpackEncoder.encodeHeader=Encoding header [{0}] with value [{1}]
+
 hpackhuffman.huffmanEncodedHpackValueDidNotEndWithEOS=Huffman encoded value in HPACK headers did not end with EOS padding
 
 http2Parser.headers.wrongFrameType=Connection [{0}], headers in progress for stream [{1}] but a frame of type [{2}] was received
@@ -125,7 +127,7 @@ upgradeHandler.windowSizeTooBig=Connecti
 upgradeHandler.windowSizeReservationInterrupted=Connection [{0}], Stream [{1}], reservation for [{2}] bytes
 upgradeHandler.writeBody=Connection [{0}], Stream [{1}], Data length [{2}]
 upgradeHandler.writeHeaders=Connection [{0}], Stream [{1}]
-upgradeHandler.writePushHeaders=Connection [{0}], Stream [{1}]
+upgradeHandler.writePushHeaders=Connection [{0}], Stream [{1}], Pushed stream [{2}]
 
 writeStateMachine.endWrite.ise=It is illegal to specify [{0}] for the new state once a write has completed
 writeStateMachine.ise=It is illegal to call [{0}()] in state [{1}]
\ No newline at end of file

Modified: tomcat/trunk/java/org/apache/coyote/http2/Stream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Stream.java?rev=1715783&r1=1715782&r2=1715783&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Stream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Stream.java Mon Nov 23 12:28:59 2015
@@ -391,7 +391,7 @@ public class Stream extends AbstractStre
         // TODO: Handle default ports
         request.getMimeHeaders().addValue(":authority").setString(
                 request.serverName().getString() + ":" + request.getServerPort());
-        push (handler, request, this);
+        push(handler, request, this);
     }
 
 



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