mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
mod_proxy(es): Avoid error response/document handling by the core if some
input filter already did it while reading client's payload. When an input filter returns AP_FILTER_ERROR, it has already called ap_die() or at least already responded to the client. Here we don't want to lose AP_FILTER_ERROR when returning from proxy handlers, so we use ap_map_http_request_error() to forward any AP_FILTER_ERROR to ap_die() which knows whether a response needs to be completed or not. Before this commit, returning an HTTP error code in this case caused a double response to be generated. Depends on r1657881 to preserve r->status (for logging) when nothing is to be done by ap_die() when handling AP_FILTER_ERROR. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1657897 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -970,19 +970,15 @@ static int proxy_handler(request_rec *r)
|
||||
case M_TRACE: {
|
||||
int access_status;
|
||||
r->proxyreq = PROXYREQ_NONE;
|
||||
if ((access_status = ap_send_http_trace(r)))
|
||||
ap_die(access_status, r);
|
||||
else
|
||||
ap_finalize_request_protocol(r);
|
||||
access_status = ap_send_http_trace(r);
|
||||
ap_die(access_status, r);
|
||||
return OK;
|
||||
}
|
||||
case M_OPTIONS: {
|
||||
int access_status;
|
||||
r->proxyreq = PROXYREQ_NONE;
|
||||
if ((access_status = ap_send_http_options(r)))
|
||||
ap_die(access_status, r);
|
||||
else
|
||||
ap_finalize_request_protocol(r);
|
||||
access_status = ap_send_http_options(r);
|
||||
ap_die(access_status, r);
|
||||
return OK;
|
||||
}
|
||||
default: {
|
||||
|
Reference in New Issue
Block a user