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/11/30 10:20:51 UTC

svn commit: r1816704 - in /tomcat/trunk/java/org/apache/coyote/http2: Http2OutputBuffer.java Stream.java

Author: markt
Date: Thu Nov 30 10:20:50 2017
New Revision: 1816704

URL: http://svn.apache.org/viewvc?rev=1816704&view=rev
Log:
Trigger sending the headers from the Http2OutputBuffer as the
StreamOutputBuffer is too late if a filter (e.g. GZip) needs to
be added.

Modified:
    tomcat/trunk/java/org/apache/coyote/http2/Http2OutputBuffer.java
    tomcat/trunk/java/org/apache/coyote/http2/Stream.java

Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2OutputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2OutputBuffer.java?rev=1816704&r1=1816703&r2=1816704&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2OutputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2OutputBuffer.java Thu Nov 30 10:20:50 2017
@@ -19,12 +19,14 @@ package org.apache.coyote.http2;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+import org.apache.coyote.Response;
 import org.apache.coyote.http.HttpOutputBuffer;
 import org.apache.coyote.http11.OutputFilter;
 import org.apache.coyote.http2.Stream.StreamOutputBuffer;
 
 public class Http2OutputBuffer implements HttpOutputBuffer {
 
+    private final Response coyoteResponse;
     private HttpOutputBuffer next;
 
 
@@ -43,13 +45,17 @@ public class Http2OutputBuffer implement
     }
 
 
-    public Http2OutputBuffer(StreamOutputBuffer streamOutputBuffer) {
+    public Http2OutputBuffer(Response coyoteResponse, StreamOutputBuffer streamOutputBuffer) {
+        this.coyoteResponse = coyoteResponse;
         this.next = streamOutputBuffer;
     }
 
 
     @Override
     public int doWrite(ByteBuffer chunk) throws IOException {
+        if (!coyoteResponse.isCommitted()) {
+            coyoteResponse.sendHeaders();
+        }
         return next.doWrite(chunk);
     }
 

Modified: tomcat/trunk/java/org/apache/coyote/http2/Stream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Stream.java?rev=1816704&r1=1816703&r2=1816704&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Stream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Stream.java Thu Nov 30 10:20:50 2017
@@ -77,7 +77,8 @@ class Stream extends AbstractStream impl
     private final Response coyoteResponse = new Response();
     private final StreamInputBuffer inputBuffer;
     private final StreamOutputBuffer streamOutputBuffer = new StreamOutputBuffer();
-    private final Http2OutputBuffer http2OutputBuffer = new Http2OutputBuffer(streamOutputBuffer);
+    private final Http2OutputBuffer http2OutputBuffer =
+            new Http2OutputBuffer(coyoteResponse, streamOutputBuffer);
 
 
     Stream(Integer identifier, Http2UpgradeHandler handler) {
@@ -712,9 +713,6 @@ class Stream extends AbstractStream impl
                 throw new IllegalStateException(
                         sm.getString("stream.closed", getConnectionId(), getIdentifier()));
             }
-            if (!coyoteResponse.isCommitted()) {
-                coyoteResponse.sendHeaders();
-            }
             int chunkLimit = chunk.limit();
             int offset = 0;
             while (chunk.remaining() > 0) {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org