Welcome! Log In Create A New Profile

Advanced

[PATCH 18 of 25] Cache: fix for sending of stale responses

Maxim Dounin
September 06, 2011 12:14PM
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1315324516 -14400
# Node ID a5f19d575163e79c38bdf7e67dc22a72ebb3a7dd
# Parent 2a8a9625e90d91f3a35a55472ad0770f8e02d96b
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.

diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -3027,7 +3027,12 @@ ngx_http_upstream_finalize_request(ngx_h

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);
}


_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[PATCH 00 of 25] generic patch queue

Maxim Dounin 1696 September 06, 2011 12:10PM

[PATCH 01 of 25] Handling of If-Range with add_header Last-Modified

Maxim Dounin 715 September 06, 2011 12:10PM

[PATCH 02 of 25] Fix for incorrect 201 replies from dav module

Maxim Dounin 726 September 06, 2011 12:10PM

[PATCH 03 of 25] Fix for double content when return is used in error_page handler

Maxim Dounin 695 September 06, 2011 12:10PM

[PATCH 04 of 25] Fix for "return 202" not discarding body

Maxim Dounin 684 September 06, 2011 12:10PM

[PATCH 05 of 25] Incorrect special case for "return 204" removed

Maxim Dounin 677 September 06, 2011 12:10PM

[PATCH 06 of 25] Clear old Location header (if any) while adding new one

Maxim Dounin 734 September 06, 2011 12:10PM

[PATCH 07 of 25] Better handling of late upstream creation

Maxim Dounin 777 September 06, 2011 12:10PM

[PATCH 08 of 25] Gzip filter: handle empty flush buffers

Maxim Dounin 750 September 06, 2011 12:12PM

[PATCH 09 of 25] Fix for connection drops with AIO

Maxim Dounin 686 September 06, 2011 12:12PM

[PATCH 10 of 25] Fix for socket leak with "aio sendfile" and "limit_rate"

Maxim Dounin 748 September 06, 2011 12:12PM

[PATCH 11 of 25] Handling of Content-Encoding set from perl

Maxim Dounin 709 September 06, 2011 12:12PM

[PATCH 12 of 25] Gzip static: "always" parameter in "gzip_static" directive

Maxim Dounin 686 September 06, 2011 12:12PM

[PATCH 13 of 25] Memcached: memcached_gzip_flag directive

Maxim Dounin 805 September 06, 2011 12:12PM

[PATCH 14 of 25] Mail: handle smtp multiline replies

Maxim Dounin 643 September 06, 2011 12:12PM

[PATCH 15 of 25] Additional headers for proxy_ignore_headers/fastcgi_ignore_headers

Maxim Dounin 726 September 06, 2011 12:12PM

[PATCH 16 of 25] Fix for proxy_store leaving temporary files for subrequests

Maxim Dounin 769 September 06, 2011 12:12PM

[PATCH 17 of 25] Cache: fix for sending of empty responses

Maxim Dounin 656 September 06, 2011 12:12PM

[PATCH 18 of 25] Cache: fix for sending of stale responses

Maxim Dounin 807 September 06, 2011 12:14PM

[PATCH 19 of 25] Variables: honor no_cacheable for not_found variables

Maxim Dounin 789 September 06, 2011 12:14PM

[PATCH 20 of 25] Core: protection from subrequest loops

Maxim Dounin 692 September 06, 2011 12:14PM

[PATCH 21 of 25] Core: protection from cycles with named locations and post_action

Maxim Dounin 715 September 06, 2011 12:14PM

[PATCH 22 of 25] Autoindex: escape '?' in file names

Maxim Dounin 792 September 06, 2011 12:14PM

[PATCH 23 of 25] Autoindex: escape html in file names

Maxim Dounin 786 September 06, 2011 12:14PM

[PATCH 24 of 25] Unbreak build with embedded perl and --with-openssl

Maxim Dounin 827 September 06, 2011 12:14PM

[PATCH 25 of 25] Time parsing cleanup

Maxim Dounin 786 September 06, 2011 12:14PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 311
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready