https://bz.apache.org/bugzilla/show_bug.cgi?id=61860

--- Comment #4 from Luca Toscano <[email protected]> ---
Ok now I think I know what's happening (and I got what Eric was trying to
suggest). One of the things that ap_send_error_response does is running
ap_run_insert_error_filter, that allows modules to insert their filters (that
will be executed). mod_headers does it, specifically it adds this bit:

/*
 * Make sure we propagate any "Header always" settings on the error
 * path through http_protocol.c.
 */
static apr_status_t ap_headers_error_filter(ap_filter_t *f,
                                            apr_bucket_brigade *in)

It makes sure that the Headers set via 'always' are in err_headers_out, to
allow them to be added in the response. The issue in my opinion is that in
ap_send_error_respose we swap r->headers_out with r->err_headers_out, and clear
r->err_headers_out (that will be re-populated afterwards). Should we simply do:

Index: modules/http/http_protocol.c
===================================================================
--- modules/http/http_protocol.c        (revision 1828234)
+++ modules/http/http_protocol.c        (working copy)
@@ -1262,7 +1262,6 @@
     }

     if (!r->assbackwards) {
-        apr_table_t *tmp = r->headers_out;

         /* For all HTTP/1.x responses for which we generate the message,
          * we need to avoid inheriting the "normal status" header fields
@@ -1269,9 +1268,7 @@
          * that may have been set by the request handler before the
          * error or redirect, except for Location on external redirects.
          */
-        r->headers_out = r->err_headers_out;
-        r->err_headers_out = tmp;
-        apr_table_clear(r->err_headers_out);
+        apr_table_clear(r->headers_out);

         if (ap_is_HTTP_REDIRECT(status) || (status == HTTP_CREATED)) {
             if ((location != NULL) && *location) {

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to