Chenjp commented on code in PR #784: URL: https://github.com/apache/tomcat/pull/784#discussion_r1853796863
########## java/org/apache/coyote/http2/Stream.java: ########## @@ -604,10 +611,23 @@ final void writeAck() throws IOException { final void writeEarlyHints() throws IOException { MimeHeaders headers = coyoteResponse.getMimeHeaders(); String originalStatus = headers.getHeader(":status"); - headers.setValue(":status").setString("103"); + headers.setValue(":status").setString(String.valueOf(HttpServletResponse.SC_EARLY_HINTS)); + try { - handler.writeHeaders(this, headers, false, Constants.DEFAULT_HEADERS_FRAME_SIZE); + MimeHeaders earlyHintsHeaders = new MimeHeaders(); + earlyHintsHeaders.duplicate(headers); + earlyHintsHeaders.filter(HTTP_EARLY_HINTS_HEADERS); + earlyHintsHeaders.setValue(":status").setString(String.valueOf(HttpServletResponse.SC_EARLY_HINTS)); + handler.writeHeaders(this, earlyHintsHeaders, false, Constants.DEFAULT_HEADERS_FRAME_SIZE); + // to take advantage of the Early Hints feature, the server-think-time is needed between the Early Hints + // headers and the final response. Therefore, we need emit early hints status and headers via flush. + flush(false); } finally { + // Once early hints emitted, clean up early hints relative headers. + // The final response is responsible for resetting Link/CSP/etc related headers + for(String header:HTTP_EARLY_HINTS_HEADERS) { + headers.removeHeader(header); + } Review Comment: see above. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org