From c666adbbaec3bdcb062d7e2f157d9b8a91a005ce Mon Sep 17 00:00:00 2001 From: Ruediger Pluem Date: Sun, 11 Dec 2005 00:50:21 +0000 Subject: [PATCH] * 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 --- modules/proxy/mod_proxy_ajp.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/proxy/mod_proxy_ajp.c b/modules/proxy/mod_proxy_ajp.c index 22e7cefcd7d..7d79eba7138 100644 --- a/modules/proxy/mod_proxy_ajp.c +++ b/modules/proxy/mod_proxy_ajp.c @@ -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,7 +414,15 @@ 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); - return HTTP_SERVICE_UNAVAILABLE; + /* + * 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 */ -- 2.47.3