You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rp...@apache.org on 2010/06/18 14:22:14 UTC

svn commit: r955966 - /httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c

Author: rpluem
Date: Fri Jun 18 12:22:13 2010
New Revision: 955966

URL: http://svn.apache.org/viewvc?rev=955966&view=rev
Log:
* Ensure that we only return a non fatal error if the request is idempotent
  and if we did not sent any request body so far.

Modified:
    httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c

Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c?rev=955966&r1=955965&r2=955966&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c Fri Jun 18 12:22:13 2010
@@ -583,8 +583,17 @@ static int ap_proxy_ajp_request(apr_pool
          */
         if (data_sent) {
             ap_proxy_backend_broke(r, output_brigade);
-        } else
+        } else if (!send_body && (is_idempotent(r) == METHOD_IDEMPOTENT)) {
+            /*
+             * This is only non fatal when we have not sent (parts) of a possible
+             * request body so far (we do not store it and thus cannot sent it
+             * again) and the method is idempotent. In this case we can dare to
+             * retry it with a different worker if we are a balancer member.
+             */
             rv = HTTP_SERVICE_UNAVAILABLE;
+        } else {
+            rv = HTTP_INTERNAL_SERVER_ERROR;
+        }
     }
 
     /*