summaryrefslogtreecommitdiffhomepage
path: root/src/http/ngx_http_upstream.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2011-05-13 10:05:38 +0000
committerIgor Sysoev <igor@sysoev.ru>2011-05-13 10:05:38 +0000
commit0d6283918f3f7cb0ab25111a978b9c09fb5cbca6 (patch)
tree670ce508e9a519687da50b063f7559433810aa49 /src/http/ngx_http_upstream.c
parent768f7a05d21be55967955b401a9716082604a0ee (diff)
downloadnginx-0d6283918f3f7cb0ab25111a978b9c09fb5cbca6.tar.gz
nginx-0d6283918f3f7cb0ab25111a978b9c09fb5cbca6.tar.bz2
fix a broken cached response if bypass/no_cache directive values are different,
the bug has been introduced in r3700
Diffstat (limited to 'src/http/ngx_http_upstream.c')
-rw-r--r--src/http/ngx_http_upstream.c38
1 files changed, 13 insertions, 25 deletions
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index 914d72c84..8f1ee42c3 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -641,19 +641,6 @@ ngx_http_upstream_cache(ngx_http_request_t *r, ngx_http_upstream_t *u)
if (c == NULL) {
- switch (ngx_http_test_predicates(r, u->conf->cache_bypass)) {
-
- case NGX_ERROR:
- return NGX_ERROR;
-
- case NGX_DECLINED:
- u->cache_status = NGX_HTTP_CACHE_BYPASS;
- return NGX_DECLINED;
-
- default: /* NGX_OK */
- break;
- }
-
if (!(r->method & u->conf->cache_methods)) {
return NGX_DECLINED;
}
@@ -674,6 +661,19 @@ ngx_http_upstream_cache(ngx_http_request_t *r, ngx_http_upstream_t *u)
ngx_http_file_cache_create_key(r);
+ switch (ngx_http_test_predicates(r, u->conf->cache_bypass)) {
+
+ case NGX_ERROR:
+ return NGX_ERROR;
+
+ case NGX_DECLINED:
+ u->cache_status = NGX_HTTP_CACHE_BYPASS;
+ return NGX_DECLINED;
+
+ default: /* NGX_OK */
+ break;
+ }
+
u->cacheable = 1;
c = r->cache;
@@ -2135,18 +2135,6 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
if (u->cache_status == NGX_HTTP_CACHE_BYPASS) {
- if (ngx_http_file_cache_new(r) != NGX_OK) {
- ngx_http_upstream_finalize_request(r, u, 0);
- return;
- }
-
- if (u->create_key(r) != NGX_OK) {
- ngx_http_upstream_finalize_request(r, u, 0);
- return;
- }
-
- /* TODO: add keys */
-
r->cache->min_uses = u->conf->cache_min_uses;
r->cache->body_start = u->conf->buffer_size;
r->cache->file_cache = u->conf->cache->data;