This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push:
new 911c3ab Minimize the input sync in a way that still works for me
911c3ab is described below
commit 911c3ab9df18ea735f643a03a134fa5f221c71e1
Author: remm <[email protected]>
AuthorDate: Fri Jun 7 10:15:48 2019 +0200
Minimize the input sync in a way that still works for me
Note: Output or input are both the upgrade handler.
Note2: Http2AsyncUpgradeHandler.writeHeaders needs at least the same sync
(on this).
---
java/org/apache/coyote/http2/Http2AsyncParser.java | 68 +++++++++++-----------
java/org/apache/coyote/http2/Http2Parser.java | 10 ++--
2 files changed, 39 insertions(+), 39 deletions(-)
diff --git a/java/org/apache/coyote/http2/Http2AsyncParser.java
b/java/org/apache/coyote/http2/Http2AsyncParser.java
index 55d97eb..827105a 100644
--- a/java/org/apache/coyote/http2/Http2AsyncParser.java
+++ b/java/org/apache/coyote/http2/Http2AsyncParser.java
@@ -240,41 +240,39 @@ class Http2AsyncParser extends Http2Parser {
if (streamException) {
swallow(streamId, payloadSize, false, payload);
} else {
- synchronized (socketWrapper) {
- switch (frameType) {
- case DATA:
- readDataFrame(streamId, flags,
payloadSize, payload);
- break;
- case HEADERS:
- readHeadersFrame(streamId, flags,
payloadSize, payload);
- break;
- case PRIORITY:
- readPriorityFrame(streamId, payload);
- break;
- case RST:
- readRstFrame(streamId, payload);
- break;
- case SETTINGS:
- readSettingsFrame(flags, payloadSize,
payload);
- break;
- case PUSH_PROMISE:
- readPushPromiseFrame(streamId, payload);
- break;
- case PING:
- readPingFrame(flags, payload);
- break;
- case GOAWAY:
- readGoawayFrame(payloadSize, payload);
- break;
- case WINDOW_UPDATE:
- readWindowUpdateFrame(streamId, payload);
- break;
- case CONTINUATION:
- readContinuationFrame(streamId, flags,
payloadSize, payload);
- break;
- case UNKNOWN:
- readUnknownFrame(streamId, frameType,
flags, payloadSize, payload);
- }
+ switch (frameType) {
+ case DATA:
+ readDataFrame(streamId, flags, payloadSize,
payload);
+ break;
+ case HEADERS:
+ readHeadersFrame(streamId, flags, payloadSize,
payload);
+ break;
+ case PRIORITY:
+ readPriorityFrame(streamId, payload);
+ break;
+ case RST:
+ readRstFrame(streamId, payload);
+ break;
+ case SETTINGS:
+ readSettingsFrame(flags, payloadSize, payload);
+ break;
+ case PUSH_PROMISE:
+ readPushPromiseFrame(streamId, payload);
+ break;
+ case PING:
+ readPingFrame(flags, payload);
+ break;
+ case GOAWAY:
+ readGoawayFrame(payloadSize, payload);
+ break;
+ case WINDOW_UPDATE:
+ readWindowUpdateFrame(streamId, payload);
+ break;
+ case CONTINUATION:
+ readContinuationFrame(streamId, flags,
payloadSize, payload);
+ break;
+ case UNKNOWN:
+ readUnknownFrame(streamId, frameType, flags,
payloadSize, payload);
}
}
// See if there is a new 9 byte header and continue
parsing if possible
diff --git a/java/org/apache/coyote/http2/Http2Parser.java
b/java/org/apache/coyote/http2/Http2Parser.java
index e99d3ff..367b809 100644
--- a/java/org/apache/coyote/http2/Http2Parser.java
+++ b/java/org/apache/coyote/http2/Http2Parser.java
@@ -582,11 +582,13 @@ class Http2Parser {
// going to be thrown.
hpackDecoder.getHeaderEmitter().validateHeaders();
- output.headersEnd(streamId);
+ synchronized (output) {
+ output.headersEnd(streamId);
- if (headersEndStream) {
- output.receivedEndOfStream(streamId);
- headersEndStream = false;
+ if (headersEndStream) {
+ output.receivedEndOfStream(streamId);
+ headersEndStream = false;
+ }
}
// Reset size for new request if the buffer was previously expanded
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]