You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2016/07/18 07:51:45 UTC
[Bug 59869] mod_proxy failonstatus option is broken since 2.4.17 on
Solaris 10
https://bz.apache.org/bugzilla/show_bug.cgi?id=59869
--- Comment #1 from Ruediger Pluem <rp...@apache.org> ---
Created attachment 34050
--> https://bz.apache.org/bugzilla/attachment.cgi?id=34050&action=edit
Patch against trunk
Does the attached patch against trunk (applies to 2.4.x with offset) fix your
problem?
Index: modules/proxy/mod_proxy.c
===================================================================
--- modules/proxy/mod_proxy.c (revision 1753164)
+++ modules/proxy/mod_proxy.c (working copy)
@@ -1273,17 +1273,25 @@
* 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 or 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);
AP_PROXY_RUN_FINISHED(r, attempts, access_status);
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org