arrfab / rpms / httpd

Forked from rpms/httpd 5 years ago
Clone

Blame SOURCES/httpd-2.4.6-r1726019.patch

cce4bc
diff --git a/modules/proxy/mod_proxy_fcgi.c b/modules/proxy/mod_proxy_fcgi.c
cce4bc
index 19fed62..7889b0e 100644
cce4bc
--- a/modules/proxy/mod_proxy_fcgi.c
cce4bc
+++ b/modules/proxy/mod_proxy_fcgi.c
cce4bc
@@ -927,6 +927,15 @@ static int fcgi_do_request(apr_pool_t *p, request_rec *r,
cce4bc
     /* Step 3: Read records from the back end server and handle them. */
cce4bc
     rv = dispatch(conn, conf, r, request_id);
cce4bc
     if (rv != APR_SUCCESS) {
cce4bc
+        /* If the client aborted the connection during retrieval or (partially)
cce4bc
+         * sending the response, dont't return a HTTP_SERVICE_UNAVAILABLE, since
cce4bc
+         * this is not a backend problem. */
cce4bc
+         if (r->connection->aborted) {
cce4bc
+            ap_log_rerror(APLOG_MARK, APLOG_TRACE1, rv, r,
cce4bc
+                          "The client aborted the connection.");
cce4bc
+            conn->close = 1;
cce4bc
+            return OK;
cce4bc
+        }
cce4bc
         ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(01075)
cce4bc
                       "Error dispatching request to %s:", server_portstr);
cce4bc
         conn->close = 1;