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:
@@ -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) {
|
||||||
|
Reference in New Issue
Block a user