mirror of
https://github.com/nginx/nginx.git
synced 2024-12-22 15:13:28 -06:00
Cache: fix for sending of stale responses.
For normal cached responses ngx_http_cache_send() sends last buffer and then request finalized via ngx_http_finalize_request() call, i.e. everything is ok. But for stale responses (i.e. when upstream died, but we have something in cache) the same ngx_http_cache_send() sends last buffer, but then in ngx_http_upstream_finalize_request() another last buffer is send. This causes duplicate final chunk to appear if chunked encoding is used (and resulting problems with keepalive connections and so on). Fix this by not sending in ngx_http_upstream_finalize_request() another last buffer if we know response was from cache.
This commit is contained in:
parent
84c58a30e6
commit
b16918ed08
@ -3072,7 +3072,12 @@ ngx_http_upstream_finalize_request(ngx_http_request_t *r,
|
|||||||
|
|
||||||
r->connection->log->action = "sending to client";
|
r->connection->log->action = "sending to client";
|
||||||
|
|
||||||
if (rc == 0) {
|
if (rc == 0
|
||||||
|
#if (NGX_HTTP_CACHE)
|
||||||
|
&& !r->cached
|
||||||
|
#endif
|
||||||
|
)
|
||||||
|
{
|
||||||
rc = ngx_http_send_special(r, NGX_HTTP_LAST);
|
rc = ngx_http_send_special(r, NGX_HTTP_LAST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user