]> granicus.if.org Git - apache/commitdiff
* revert r355823 and r355837
authorRuediger Pluem <rpluem@apache.org>
Sun, 11 Dec 2005 01:28:13 +0000 (01:28 +0000)
committerRuediger Pluem <rpluem@apache.org>
Sun, 11 Dec 2005 01:28:13 +0000 (01:28 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@355853 13f79535-47bb-0310-9956-ffa450edef68

modules/proxy/mod_proxy.c
modules/proxy/mod_proxy.h
modules/proxy/mod_proxy_ajp.c
modules/proxy/mod_proxy_http.c

index 0101c5ff14d7f21b5ca973c90ed11a82990fff1d..4eab150829ee410490b78e7fff89ee5fb2f699b5 100644 (file)
@@ -758,20 +758,6 @@ static int proxy_handler(request_rec *r)
                 worker->s->status |= PROXY_WORKER_IN_ERROR;
             }
         }
-        else if (access_status == PROXY_BACKEND_BROKEN) {
-            /*
-             * If the backend broke after the headers had been sent do not
-             * try another worker, but leave. Do not mark the worker as
-             * unsuable as this problem may not reoccur on the next request.
-             *
-             * TODO: Currently we abort the connection and notify all parties
-             * on the upstream that something went wrong by setting c->aborted
-             * to 1. This idea is currently vetoed and should be replaced with
-             * other methods
-             */
-            r->connection->aborted = 1;
-            break;
-        }
         else {
             /* Unrecoverable error.
              * Return the origin status code to the client.
index f84cc254f5d7a259ca4b6892320fff6a4cfad806..63ed1afe2cfcf0435169720146ac70d6d96f483d 100644 (file)
@@ -238,12 +238,6 @@ struct proxy_conn_pool {
     proxy_conn_rec *conn;   /* Single connection for prefork mpm's */
 };
 
-/*
- * Return code that scheme handlers should return if the backend connection
- * broke after they have sent the headers
- */
-#define PROXY_BACKEND_BROKEN -10
-
 /* woker status flags */
 #define PROXY_WORKER_INITIALIZED    0x0001
 #define PROXY_WORKER_IGNORE_ERRORS  0x0002
index 7d79eba71382b2d6c41ffefe2afaa5d7d4a96775..22e7cefcd7d030dba8bd4d5567d3cfcaafd6912c 100644 (file)
@@ -138,7 +138,6 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
     int havebody = 1;
     int isok = 1;
     apr_off_t bb_len;
-    int data_sent = 0;
 #ifdef FLUSHING_BANDAID
     apr_int32_t conn_poll_fd;
     apr_pollfd_t *conn_poll;
@@ -349,8 +348,6 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
                                       "proxy: error processing body");
                         isok = 0;
                     }
-                    /* memorize that we sent data */
-                    data_sent = 1;
                     apr_brigade_cleanup(output_brigade);
                 }
                 else {
@@ -366,8 +363,6 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
                                   "proxy: error processing body");
                     isok = 0;
                 }
-                /* memorize that we sent data */
-                data_sent = 1;
                 break;
             default:
                 isok = 0;
@@ -414,15 +409,7 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
                      "proxy: send body failed to %pI (%s)",
                      conn->worker->cp->addr,
                      conn->worker->hostname);
-        /*
-         * If we have sent data (and thus the headers) we must let the
-         * others know.
-         */
-        if (data_sent) {
-            return PROXY_BACKEND_BROKEN;
-        } else {
-            return HTTP_SERVICE_UNAVAILABLE;
-        }
+        return HTTP_SERVICE_UNAVAILABLE;
     }
 
     /* Nice we have answer to send to the client */
index b751efadc4a77fd94574e488926f0a210bf89a2f..250b7601d02823afab839403951d2620929a63b0 100644 (file)
@@ -1199,7 +1199,6 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r,
                            * are being read. */
     int pread_len = 0;
     apr_table_t *save_table;
-    int backend_broken = 0;
 
     bb = apr_brigade_create(p, c->bucket_alloc);
 
@@ -1487,7 +1486,7 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r,
                          */
                         ap_log_cerror(APLOG_MARK, APLOG_ERR, rv, c,
                                       "proxy: error reading response");
-                        backend_broken = 1;
+                        c->aborted = 1;
                         break;
                     }
                     /* next time try a non-blocking read */
@@ -1553,9 +1552,9 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r,
         }
     } while (interim_response);
 
-    /* Signal back that the backend broke after we sent the headers. */
-    if (backend_broken) {
-        return PROXY_BACKEND_BROKEN;
+    /* If our connection with the client is to be aborted, return DONE. */
+    if (c->aborted) {
+        return DONE;
     }
 
     if (conf->error_override) {