Index: httpd-2.2.17/modules/proxy/mod_proxy_ajp.c
===================================================================
--- httpd-2.2.17/modules/proxy/mod_proxy_ajp.c	(revision 1091721)
+++ httpd-2.2.17/modules/proxy/mod_proxy_ajp.c	(working copy)
@@ -334,6 +334,15 @@
                      "proxy: read response failed from %pI (%s)",
                      conn->worker->cp->addr,
                      conn->worker->hostname);
+
+        /* If we had a successful cping/cpong and then a timeout
+         * we assume it is a request that cause a back-end timeout,
+         * but doesn't affect the whole worker.
+         */
+        if (status == APR_TIMEUP && conn->worker->ping_timeout_set) {
+            return HTTP_GATEWAY_TIME_OUT;
+        }
+
         /*
          * 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
Index: httpd-2.2.17/modules/proxy/ajp_link.c
===================================================================
--- httpd-2.2.17/modules/proxy/ajp_link.c	(revision 1091721)
+++ httpd-2.2.17/modules/proxy/ajp_link.c	(working copy)
@@ -95,7 +95,7 @@
     if (status != APR_SUCCESS) {
         ap_log_error(APLOG_MARK, APLOG_ERR, status, NULL,
                      "ajp_ilink_receive() can't receive header");
-        return AJP_ENO_HEADER;
+        return (status == APR_TIMEUP ? APR_TIMEUP : AJP_ENO_HEADER);
     }
 
     status = ajp_msg_check_header(msg, &blen);
