diff --git a/CHANGES b/CHANGES index 5a65c4e962..7d6770a900 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,10 @@ Changes with Apache 2.0.29-dev + *) Fix a bug which would cause the response headers to be omitted + when sending a negotiated ErrorDocument because the required + filters were attached to the wrong request_rec. + [John Sterling ] + *) Remove commas from the end of the macros that define directives that are used by MPMs. Prior to this patch, you would use these macros without commas, which was unlike diff --git a/modules/http/http_request.c b/modules/http/http_request.c index 9bb4bece4e..99a53cfc18 100644 --- a/modules/http/http_request.c +++ b/modules/http/http_request.c @@ -123,6 +123,11 @@ AP_DECLARE(void) ap_die(int type, request_rec *r) int error_index = ap_index_of_response(type); char *custom_response = ap_response_code_string(r, error_index); int recursive_error = 0; + /* There are some cases where we walk up the request hierarchy + * to obtain the original error, but when adding the required_filters, + * we need to do so against the one we came in with. So, save it. + */ + request_rec *cur = r; if (type == AP_FILTER_ERROR) { return; @@ -224,7 +229,7 @@ AP_DECLARE(void) ap_die(int type, request_rec *r) custom_response); } } - add_required_filters(r); + add_required_filters(cur); ap_send_error_response(r, recursive_error); }