1
0
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:
Graham Leggett
2001-06-01 17:35:07 +00:00
parent 1fe44dacde
commit 222ffd4bea
2 changed files with 28 additions and 0 deletions

View File

@@ -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);
}