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