mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
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. Submitted by: John Sterling <sterling@covalent.net> Reviewed by: Justin Erenkrantz, Cliff Woolley git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91900 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user