1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-07 04:02:58 +03:00

* Avoid sending no answer at all if a custom error page causes an

AP_FILTER_ERROR.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@722213 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Ruediger Pluem
2008-12-01 20:27:27 +00:00
parent 736f9595cc
commit cd505682e9

View File

@@ -79,7 +79,31 @@ AP_DECLARE(void) ap_die(int type, request_rec *r)
request_rec *r_1st_err = r; request_rec *r_1st_err = r;
if (type == AP_FILTER_ERROR) { if (type == AP_FILTER_ERROR) {
return; ap_filter_t *next;
/*
* Check if we still have the ap_http_header_filter in place. If
* this is the case we should not ignore AP_FILTER_ERROR here because
* it means that we have not sent any response at all and never
* will. This is bad. Sent an internal server error instead.
*/
next = r->output_filters;
while (next && (next->frec != ap_http_header_filter_handle)) {
next = next->next;
}
/*
* If next != NULL then we left the while above because of
* next->frec == ap_http_header_filter
*/
if (next) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
"Custom error page caused AP_FILTER_ERROR");
type = HTTP_INTERNAL_SERVER_ERROR;
}
else {
return;
}
} }
if (type == DONE) { if (type == DONE) {