]> git.kaiwu.me - nginx.git/commitdiff
reinit proxy/fastcgi header parser before ngx_http_upstream_cache_send()
authorIgor Sysoev <igor@sysoev.ru>
Tue, 5 May 2009 17:18:33 +0000 (17:18 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Tue, 5 May 2009 17:18:33 +0000 (17:18 +0000)
src/http/ngx_http_upstream.c

index 74c9b20f1dc55e88e6408a96ee9434191e3c0408..4913fe38adbecd739a9387476d462d00e57c9cac 100644 (file)
@@ -1472,6 +1472,7 @@ ngx_http_upstream_process_header(ngx_http_request_t *r, ngx_http_upstream_t *u)
 static ngx_int_t
 ngx_http_upstream_test_next(ngx_http_request_t *r, ngx_http_upstream_t *u)
 {
+    ngx_int_t                  rc;
     ngx_uint_t                 status;
     ngx_http_upstream_next_t  *un;
 
@@ -1491,8 +1492,14 @@ ngx_http_upstream_test_next(ngx_http_request_t *r, ngx_http_upstream_t *u)
 #if (NGX_HTTP_CACHE)
 
         if (u->stale_cache && (u->conf->cache_use_stale & un->mask)) {
-            ngx_http_upstream_finalize_request(r, u,
-                                           ngx_http_upstream_cache_send(r, u));
+
+            rc = u->reinit_request(r);
+
+            if (rc == NGX_OK) {
+                rc = ngx_http_upstream_cache_send(r, u);
+            }
+
+            ngx_http_upstream_finalize_request(r, u, rc);
             return NGX_OK;
         }
 
@@ -2643,9 +2650,15 @@ ngx_http_upstream_next(ngx_http_request_t *r, ngx_http_upstream_t *u,
 #if (NGX_HTTP_CACHE)
 
             if (u->stale_cache && (u->conf->cache_use_stale & ft_type)) {
+                ngx_int_t  rc;
 
-                ngx_http_upstream_finalize_request(r, u,
-                                           ngx_http_upstream_cache_send(r, u));
+                rc = u->reinit_request(r);
+
+                if (rc == NGX_OK) {
+                    rc = ngx_http_upstream_cache_send(r, u);
+                }
+
+                ngx_http_upstream_finalize_request(r, u, rc);
                 return;
             }
 #endif