[nginx] Upstream: fixed "zero size buf" alerts with cache (ticket #918).
mdounin at mdounin.ru
Thu Mar 10 18:58:33 UTC 2016
user: Maxim Dounin <mdounin at mdounin.ru>
date: Thu Mar 10 21:58:03 2016 +0300
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.
src/http/ngx_http_upstream.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diffs (13 lines):
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
@@ -4068,7 +4068,8 @@ ngx_http_upstream_finalize_request(ngx_h
|| rc == NGX_HTTP_REQUEST_TIME_OUT
- || rc == NGX_HTTP_CLIENT_CLOSED_REQUEST)
+ || rc == NGX_HTTP_CLIENT_CLOSED_REQUEST
+ || (u->pipe && u->pipe->downstream_error))
More information about the nginx-devel