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 <r...@apache.org>
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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to