comparison src/http/ngx_http_upstream.c @ 6427:ad3f342f14ba

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.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 10 Mar 2016 21:58:03 +0300
parents cf5e822cf470
children 545b5e4d83b2
comparison
equal deleted inserted replaced
6426:1cbd7f87c6ed 6427:ad3f342f14ba
4066 4066
4067 r->connection->log->action = "sending to client"; 4067 r->connection->log->action = "sending to client";
4068 4068
4069 if (!u->header_sent 4069 if (!u->header_sent
4070 || rc == NGX_HTTP_REQUEST_TIME_OUT 4070 || rc == NGX_HTTP_REQUEST_TIME_OUT
4071 || rc == NGX_HTTP_CLIENT_CLOSED_REQUEST) 4071 || rc == NGX_HTTP_CLIENT_CLOSED_REQUEST
4072 || (u->pipe && u->pipe->downstream_error))
4072 { 4073 {
4073 ngx_http_finalize_request(r, rc); 4074 ngx_http_finalize_request(r, rc);
4074 return; 4075 return;
4075 } 4076 }
4076 4077