markt-asf commented on code in PR #785:
URL: https://github.com/apache/tomcat/pull/785#discussion_r1853737908


##########
java/org/apache/coyote/http11/Http11Processor.java:
##########
@@ -1250,8 +1255,19 @@ protected final void ack(ContinueResponseTiming 
continueResponseTiming) {
 
     @Override
     protected void earlyHints() throws IOException {
-        writeHeaders(103, response.getMimeHeaders());
+        MimeHeaders earlyHintsHeaders = new MimeHeaders();
+        earlyHintsHeaders.duplicate(response.getMimeHeaders());
+        earlyHintsHeaders.filter(HTTP_EARLY_HINTS_HEADERS);
+        writeHeaders(HttpServletResponse.SC_EARLY_HINTS, earlyHintsHeaders);
+        // 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) {
+            response.getMimeHeaders().removeHeader(header);
+        }

Review Comment:
   No need to duplicate MimeHeaders. No need to remove headers after sending 
103.



##########
java/org/apache/coyote/http11/Http11Processor.java:
##########
@@ -1250,8 +1255,19 @@ protected final void ack(ContinueResponseTiming 
continueResponseTiming) {
 
     @Override
     protected void earlyHints() throws IOException {
-        writeHeaders(103, response.getMimeHeaders());
+        MimeHeaders earlyHintsHeaders = new MimeHeaders();
+        earlyHintsHeaders.duplicate(response.getMimeHeaders());
+        earlyHintsHeaders.filter(HTTP_EARLY_HINTS_HEADERS);
+        writeHeaders(HttpServletResponse.SC_EARLY_HINTS, earlyHintsHeaders);
+        // 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) {
+            response.getMimeHeaders().removeHeader(header);
+        }
         outputBuffer.writeHeaders();
+        // 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.
+        outputBuffer.flush();

Review Comment:
   No need to flush.



##########
java/org/apache/coyote/http11/Http11Processor.java:
##########
@@ -1250,8 +1255,19 @@ protected final void ack(ContinueResponseTiming 
continueResponseTiming) {
 
     @Override
     protected void earlyHints() throws IOException {
-        writeHeaders(103, response.getMimeHeaders());
+        MimeHeaders earlyHintsHeaders = new MimeHeaders();
+        earlyHintsHeaders.duplicate(response.getMimeHeaders());
+        earlyHintsHeaders.filter(HTTP_EARLY_HINTS_HEADERS);
+        writeHeaders(HttpServletResponse.SC_EARLY_HINTS, earlyHintsHeaders);

Review Comment:
   I do support the use of a constant here.



-- 
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

Reply via email to