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 2016/10/13 10:37:30 UTC
svn commit: r1764649 -
/tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java
Author: markt
Date: Thu Oct 13 10:37:29 2016
New Revision: 1764649
URL: http://svn.apache.org/viewvc?rev=1764649&view=rev
Log:
Refactor header completion handling to a single method
Modified:
tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.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=1764649&r1=1764648&r2=1764649&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2Parser.java Thu Oct 13 10:37:29 2016
@@ -241,25 +241,17 @@ class Http2Parser {
payloadSize -= padLength;
}
- boolean endOfHeaders = Flags.isEndOfHeaders(flags);
-
- readHeaderPayload(payloadSize, endOfHeaders);
+ readHeaderPayload(payloadSize);
swallow(streamId, padLength, true);
- if (endOfHeaders) {
- output.headersEnd(streamId);
+ headersEndStream = Flags.isEndOfStream(flags);
+
+ if (Flags.isEndOfHeaders(flags)) {
+ onHeadersComplete(streamId);
} else {
headersCurrentStream = streamId;
}
-
- if (Flags.isEndOfStream(flags)) {
- if (headersCurrentStream == -1) {
- output.receiveEndOfStream(streamId);
- } else {
- headersEndStream = true;
- }
- }
}
@@ -377,22 +369,16 @@ class Http2Parser {
Integer.toString(streamId)), Http2Error.PROTOCOL_ERROR);
}
- boolean endOfHeaders = Flags.isEndOfHeaders(flags);
- readHeaderPayload(payloadSize, endOfHeaders);
+ readHeaderPayload(payloadSize);
- if (endOfHeaders) {
- output.headersEnd(streamId);
+ if (Flags.isEndOfHeaders(flags)) {
+ onHeadersComplete(streamId);
headersCurrentStream = -1;
- if (headersEndStream) {
- output.receiveEndOfStream(streamId);
- headersEndStream = false;
- }
}
}
- private void readHeaderPayload(int payloadSize, boolean endOfHeaders)
- throws Http2Exception, IOException {
+ private void readHeaderPayload(int payloadSize) throws Http2Exception, IOException {
while (payloadSize > 0) {
int toRead = Math.min(headerReadBuffer.remaining(), payloadSize);
@@ -411,12 +397,23 @@ class Http2Parser {
headerReadBuffer.compact();
payloadSize -= toRead;
}
+ }
+
- if (headerReadBuffer.position() > 0 && endOfHeaders) {
+ private void onHeadersComplete(int streamId) throws Http2Exception {
+ // Any left over data is a compression error
+ if (headerReadBuffer.position() > 0) {
throw new ConnectionException(
sm.getString("http2Parser.processFrameHeaders.decodingDataLeft"),
Http2Error.COMPRESSION_ERROR);
}
+
+ output.headersEnd(streamId);
+
+ if (headersEndStream) {
+ output.receiveEndOfStream(streamId);
+ headersEndStream = false;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org