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 2017/03/26 17:06:19 UTC
svn commit: r1788753 -
/tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
Author: markt
Date: Sun Mar 26 17:06:19 2017
New Revision: 1788753
URL: http://svn.apache.org/viewvc?rev=1788753&view=rev
Log:
Should be tracking max *active* stream ID
Found with the h2spec tool written by Moto Ishizawa.
Modified:
tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
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=1788753&r1=1788752&r2=1788753&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Sun Mar 26 17:06:19 2017
@@ -130,7 +130,6 @@ class Http2UpgradeHandler extends Abstra
private final Map<Integer,Stream> streams = new HashMap<>();
protected final AtomicInteger activeRemoteStreamCount = new AtomicInteger(0);
- private volatile int maxRemoteStreamId = 0;
// Start at -1 so the 'add 2' logic in closeIdleStreams() works
private volatile int maxActiveRemoteStreamId = -1;
private volatile int maxProcessedStreamId;
@@ -170,7 +169,6 @@ class Http2UpgradeHandler extends Abstra
Integer key = Integer.valueOf(1);
Stream stream = new Stream(key, this, coyoteRequest);
streams.put(key, stream);
- maxRemoteStreamId = 1;
maxActiveRemoteStreamId = 1;
activeRemoteStreamCount.set(1);
maxProcessedStreamId = 1;
@@ -957,16 +955,10 @@ class Http2UpgradeHandler extends Abstra
sm.getString("upgradeHandler.stream.even", key), Http2Error.PROTOCOL_ERROR);
}
- if (streamId <= maxRemoteStreamId) {
- throw new ConnectionException(sm.getString("upgradeHandler.stream.old", key,
- Integer.valueOf(maxRemoteStreamId)), Http2Error.PROTOCOL_ERROR);
- }
-
pruneClosedStreams();
Stream result = new Stream(key, this);
streams.put(key, result);
- maxRemoteStreamId = streamId;
return result;
}
@@ -978,7 +970,6 @@ class Http2UpgradeHandler extends Abstra
Stream result = new Stream(key, this, request);
streams.put(key, result);
- maxRemoteStreamId = streamId;
return result;
}
@@ -1367,6 +1358,11 @@ class Http2UpgradeHandler extends Abstra
if (stream == null) {
stream = createRemoteStream(streamId);
}
+ if (streamId < maxActiveRemoteStreamId) {
+ throw new ConnectionException(sm.getString("upgradeHandler.stream.old",
+ Integer.valueOf(streamId), Integer.valueOf(maxActiveRemoteStreamId)),
+ Http2Error.PROTOCOL_ERROR);
+ }
stream.checkState(FrameType.HEADERS);
stream.receivedStartOfHeaders(headersEndStream);
closeIdleStreams(streamId);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org