Mercurial > hg > nginx-quic
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 |