Commit 22686949 authored by Ruediger Pluem's avatar Ruediger Pluem
Browse files

* Let the proxy handler know that the backend connection broke after we have

  sent the headers.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@355837 13f79535-47bb-0310-9956-ffa450edef68
parent 7f4f708f
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -138,6 +138,7 @@ 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;
@@ -348,6 +349,8 @@ 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 {
@@ -363,6 +366,8 @@ 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;
@@ -409,8 +414,16 @@ 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;
        }
    }

    /* Nice we have answer to send to the client */
    if (result == CMD_AJP13_END_RESPONSE && isok) {