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

@@ -1,4 +1,9 @@
Changes with Apache 2.0.19-dev Changes with Apache 2.0.19-dev
*) 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. [John Sterling]
*) New Header directive 'echo' option. "Header echo regex" will *) New Header directive 'echo' option. "Header echo regex" will
cause any headers received on the request that match regex to be cause any headers received on the request that match regex to be
echoed to (included in) the response headers. echoed to (included in) the response headers.

View File

@@ -91,6 +91,28 @@
#include <stdarg.h> #include <stdarg.h>
#endif #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... * Mainline request processing...
@@ -201,6 +223,7 @@ AP_DECLARE(void) ap_die(int type, request_rec *r)
custom_response); custom_response);
} }
} }
add_required_filters(r);
ap_send_error_response(r, recursive_error); ap_send_error_response(r, recursive_error);
} }