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

* Do not overwrite r->status with access_status if access_status is OK or DONE

as in this case r->status might contain the true response code.

PR: 59869


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1753592 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Ruediger Pluem
2016-07-20 18:25:01 +00:00
parent eee5bc3f1f
commit fb8aa91094
2 changed files with 20 additions and 9 deletions

View File

@@ -1273,16 +1273,24 @@ cleanup:
* the error page on the proxy or if the error was not generated by the
* backend itself but by the proxy e.g. a bad gateway) in order to give
* ap_proxy_post_request a chance to act correctly on the status code.
* But only do the above if access_status is not OK and not DONE, because
* in this case r->status might contain the true status and overwriting
* it with OK or DONE would be wrong.
*/
saved_status = r->status;
r->status = access_status;
ap_proxy_post_request(worker, balancer, r, conf);
/*
* Only restore r->status if it has not been changed by
* ap_proxy_post_request as we assume that this change was intentional.
*/
if (r->status == access_status) {
r->status = saved_status;
if ((access_status != OK) && (access_status != DONE)) {
saved_status = r->status;
r->status = access_status;
ap_proxy_post_request(worker, balancer, r, conf);
/*
* Only restore r->status if it has not been changed by
* ap_proxy_post_request as we assume that this change was intentional.
*/
if (r->status == access_status) {
r->status = saved_status;
}
}
else {
ap_proxy_post_request(worker, balancer, r, conf);
}
proxy_run_request_status(&access_status, r);