aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2016-03-10 21:58:03 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2016-03-10 21:58:03 +0300
commit2aa6d7fd65b2c423ffc8fa9d171efd28c994acde (patch)
tree8e91eced79516293fe8bd9f45ba937290c52049a /src
parentcf4879440772558968af76cae5a9170656ed48b8 (diff)
downloadnginx-2aa6d7fd65b2c423ffc8fa9d171efd28c994acde.tar.gz
nginx-2aa6d7fd65b2c423ffc8fa9d171efd28c994acde.zip
Upstream: fixed "zero size buf" alerts with cache (ticket #918).
If caching was used, "zero size buf in output" alerts might appear in logs if a client prematurely closed connection. Alerts appeared in the following situation: - writing to client returned an error, so event pipe drained all busy buffers leaving body output filters in an invalid state; - when upstream response was fully received, ngx_http_upstream_finalize_request() tried to flush all pending data. Fix is to avoid flushing body if p->downstream_error is set.
Diffstat (limited to 'src')
-rw-r--r--src/http/ngx_http_upstream.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index dbaa9563d..08fa95a93 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -4068,7 +4068,8 @@ ngx_http_upstream_finalize_request(ngx_http_request_t *r,
if (!u->header_sent
|| rc == NGX_HTTP_REQUEST_TIME_OUT
- || rc == NGX_HTTP_CLIENT_CLOSED_REQUEST)
+ || rc == NGX_HTTP_CLIENT_CLOSED_REQUEST
+ || (u->pipe && u->pipe->downstream_error))
{
ngx_http_finalize_request(r, rc);
return;