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:
5
CHANGES
5
CHANGES
@@ -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.
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user