mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
Add a check to ap_die() to make sure the filter stack is sane and
contains the correct basic filters when an error occurs. This fixes a problem where headers are not being sent on error. PR: Obtained from: Submitted by: John Sterling Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89253 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -91,6 +91,28 @@
|
||||
#include <stdarg.h>
|
||||
#endif
|
||||
|
||||
static void add_required_filters(request_rec *r)
|
||||
{
|
||||
ap_filter_t *f = r->output_filters;
|
||||
int has_core = 0, has_content = 0, has_http_header = 0;
|
||||
while (f) {
|
||||
if(!strcasecmp(f->frec->name, "CORE"))
|
||||
has_core = 1;
|
||||
else if(!strcasecmp(f->frec->name, "CONTENT_LENGTH"))
|
||||
has_content = 1;
|
||||
else if(!strcasecmp(f->frec->name, "HTTP_HEADER"))
|
||||
has_http_header = 1;
|
||||
f = f->next;
|
||||
}
|
||||
if(!has_core)
|
||||
ap_add_output_filter("CORE", NULL, r, r->connection);
|
||||
if(!has_content)
|
||||
ap_add_output_filter("CONTENT_LENGTH", NULL, r, r->connection);
|
||||
if(!has_http_header)
|
||||
ap_add_output_filter("HTTP_HEADER", NULL, r, r->connection);
|
||||
|
||||
}
|
||||
|
||||
/*****************************************************************
|
||||
*
|
||||
* Mainline request processing...
|
||||
@@ -201,6 +223,7 @@ AP_DECLARE(void) ap_die(int type, request_rec *r)
|
||||
custom_response);
|
||||
}
|
||||
}
|
||||
add_required_filters(r);
|
||||
ap_send_error_response(r, recursive_error);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user