]> git.kaiwu.me - nginx.git/commitdiff
Fixed cache bypass caching of non-cacheable replies (ticket #21).
authorMaxim Dounin <mdounin@mdounin.ru>
Wed, 5 Oct 2011 10:14:21 +0000 (10:14 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Wed, 5 Oct 2011 10:14:21 +0000 (10:14 +0000)
If cache was bypassed with proxy_cache_bypass, cache-controlling headers
(Cache-Control, Expires) wasn't considered and response was cached even
if it was actually non-cacheable.

Patch by John Ferlito.

src/http/ngx_http_upstream.c

index 7e06b677ec48fa76158e0d80c9f52eeb1fc1bb34..89d21d8601635975fec241e7f4f4b6ded70c39c3 100644 (file)
@@ -683,6 +683,8 @@ ngx_http_upstream_cache(ngx_http_request_t *r, ngx_http_upstream_t *u)
             return NGX_DECLINED;
         }
 
+        u->cacheable = 1;
+
         switch (ngx_http_test_predicates(r, u->conf->cache_bypass)) {
 
         case NGX_ERROR:
@@ -696,8 +698,6 @@ ngx_http_upstream_cache(ngx_http_request_t *r, ngx_http_upstream_t *u)
             break;
         }
 
-        u->cacheable = 1;
-
         c = r->cache;
 
         c->min_uses = u->conf->cache_min_uses;
@@ -2181,8 +2181,6 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
                 ngx_http_upstream_finalize_request(r, u, 0);
                 return;
             }
-
-            u->cacheable = 1;
         }
 
         break;