Author: markt Date: Fri Mar 24 23:07:16 2017 New Revision: 1788560 URL: http://svn.apache.org/viewvc?rev=1788560&view=rev Log: Streams can't depend on themselves. Found with the h2spec tool written by Moto Ishizawa.
Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties 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=1788560&r1=1788559&r2=1788560&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Fri Mar 24 23:07:16 2017 @@ -1402,6 +1402,10 @@ class Http2UpgradeHandler extends Abstra @Override public void reprioritise(int streamId, int parentStreamId, boolean exclusive, int weight) throws Http2Exception { + if (streamId == parentStreamId) { + throw new ConnectionException(sm.getString("upgradeHandler.dependency.invalid", + getConnectionId(), Integer.valueOf(streamId)), Http2Error.PROTOCOL_ERROR); + } Stream stream = getStream(streamId, false); if (stream == null) { stream = createRemoteStream(streamId); 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=1788560&r1=1788559&r2=1788560&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/coyote/http2/LocalStrings.properties Fri Mar 24 23:07:16 2017 @@ -105,6 +105,7 @@ upgradeHandler.allocate.debug=Connection upgradeHandler.allocate.left=Connection [{0}], Stream [{1}], [{2}] bytes unallocated - trying to allocate to children upgradeHandler.allocate.recipient=Connection [{0}], Stream [{1}], potential recipient [{2}] with weight [{3}] upgradeHandler.connectionError=Connection error +upgradeHandler.dependency.invalid=Connection [{0}], Stream [{1}], Streams may not depend on themselves upgradeHandler.goaway.debug=Connection [{0}], Goaway, Last stream [{1}], Error code [{2}], Debug data [{3}] upgradeHandler.init=Connection [{0}], State [{1}] upgradeHandler.initialWindowSize.invalid=Connection [{0}], Illegal value of [{1}] ignored for initial window size --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org