Author: markt
Date: Tue Jun 9 13:43:15 2015
New Revision: 1684421
URL: http://svn.apache.org/r1684421
Log:
Enable ignored test now handling for stream errors has been implemented.
More clarifications around sub-states for closed streams (these need some unit
tests)
Modified:
tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java
tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java
tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_5_1.java
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=1684421&r1=1684420&r2=1684421&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java Tue Jun 9
13:43:15 2015
@@ -236,6 +236,8 @@ class Http2Parser {
long errorCode = ByteUtil.getFourBytes(payload, 0);
output.reset(streamId, errorCode);
+ headersCurrentStream = -1;
+ headersEndStream = false;
}
@@ -427,7 +429,9 @@ class Http2Parser {
connectionId, Integer.toString(headersCurrentStream),
Integer.toString(streamId)), Error.COMPRESSION_ERROR);
}
- if (frameType != FrameType.CONTINUATION) {
+ if (frameType == FrameType.RST) {
+ // NO-OP: RST is OK here
+ } else if (frameType != FrameType.CONTINUATION) {
throw new
ConnectionError(sm.getString("http2Parser.headers.wrongFrameType",
connectionId, Integer.toString(headersCurrentStream),
frameType), Error.COMPRESSION_ERROR);
Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java?rev=1684421&r1=1684420&r2=1684421&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java Tue Jun
9 13:43:15 2015
@@ -83,12 +83,12 @@ public class StreamStateMachine {
public synchronized void sendReset() {
- stateChange(state, State.CLOSED_TX);
+ stateChange(state, State.CLOSED_RST_TX);
}
public synchronized void receiveReset() {
- stateChange(state, State.CLOSED_RST);
+ stateChange(state, State.CLOSED_RST_RX);
}
@@ -140,9 +140,13 @@ public class StreamStateMachine {
HALF_CLOSED_REMOTE (true, Error.STREAM_CLOSED, FrameType.PRIORITY,
FrameType.RST,
FrameType.WINDOW_UPDATE),
CLOSED_RX (true, Error.STREAM_CLOSED, FrameType.PRIORITY),
- CLOSED_RST (false, Error.STREAM_CLOSED, FrameType.PRIORITY),
CLOSED_TX (true, Error.STREAM_CLOSED, FrameType.PRIORITY,
FrameType.RST,
- FrameType.WINDOW_UPDATE);
+ FrameType.WINDOW_UPDATE),
+ CLOSED_RST_RX (false, Error.STREAM_CLOSED, FrameType.PRIORITY),
+ CLOSED_RST_TX (false, Error.STREAM_CLOSED, FrameType.DATA,
FrameType.HEADERS,
+ FrameType.PRIORITY, FrameType.RST,
FrameType.PUSH_PROMISE,
+ FrameType.WINDOW_UPDATE),
+ CLOSED_FINAL (true, Error.PROTOCOL_ERROR, FrameType.PRIORITY);
private final boolean connectionErrorForInvalidFrame;
private final Error errorCodeForInvalidFrame;
Modified: tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_5_1.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_5_1.java?rev=1684421&r1=1684420&r2=1684421&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_5_1.java
(original)
+++ tomcat/trunk/test/org/apache/coyote/http2/TestHttp2Section_5_1.java Tue Jun
9 13:43:15 2015
@@ -19,7 +19,6 @@ package org.apache.coyote.http2;
import java.nio.ByteBuffer;
import org.junit.Assert;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -85,7 +84,6 @@ public class TestHttp2Section_5_1 extend
@Test
- @Ignore // Need to handle stream closes
public void testClosedInvalidFrame01() throws Exception {
hpackEncoder = new
HpackEncoder(ConnectionSettings.DEFAULT_HEADER_TABLE_SIZE);
@@ -111,8 +109,7 @@ public class TestHttp2Section_5_1 extend
parser.readFrame(true);
Assert.assertTrue(output.getTrace(),
- output.getTrace().startsWith("0-Goaway-[2147483647]-[" +
- Error.STREAM_CLOSED.getCode() + "]-["));
+ output.getTrace().startsWith("3-RST-[" +
Error.STREAM_CLOSED.getCode() + "]"));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]