]> git.kaiwu.me - nginx.git/commitdiff
Upstream: fix $upstream_status variable.
authorPiotr Sikora <piotr@cloudflare.com>
Wed, 12 Feb 2014 05:54:42 +0000 (21:54 -0800)
committerPiotr Sikora <piotr@cloudflare.com>
Wed, 12 Feb 2014 05:54:42 +0000 (21:54 -0800)
Previously, upstream's status code was overwritten with
cached response's status code when STALE or REVALIDATED
response was sent to the client.

Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
src/http/modules/ngx_http_fastcgi_module.c
src/http/modules/ngx_http_proxy_module.c
src/http/modules/ngx_http_scgi_module.c
src/http/modules/ngx_http_uwsgi_module.c

index 5bcf6ef8c7a90d524f894f1e089fa0d286394146..24dbbf663cf96ddbe3d869e86405f5705a6699c3 100644 (file)
@@ -1584,7 +1584,7 @@ ngx_http_fastcgi_process_header(ngx_http_request_t *r)
                     ngx_str_set(&u->headers_in.status_line, "200 OK");
                 }
 
-                if (u->state) {
+                if (u->state && u->state->status == 0) {
                     u->state->status = u->headers_in.status_n;
                 }
 
index 93469984c6a44afee73ae8f1a5cd9c3bda4733a5..8ee32f491a1827a3b28893ad67c8752f04a5c6c1 100644 (file)
@@ -1362,7 +1362,7 @@ ngx_http_proxy_process_status_line(ngx_http_request_t *r)
         return NGX_OK;
     }
 
-    if (u->state) {
+    if (u->state && u->state->status == 0) {
         u->state->status = ctx->status.code;
     }
 
index 70f6ac1de29405cd9e8541a2d35db13fbbe134b6..884cb500adf7a21f292a06f96c28cefd7e59c0a1 100644 (file)
@@ -885,7 +885,7 @@ ngx_http_scgi_process_status_line(ngx_http_request_t *r)
         return ngx_http_scgi_process_header(r);
     }
 
-    if (u->state) {
+    if (u->state && u->state->status == 0) {
         u->state->status = status->code;
     }
 
@@ -1013,7 +1013,7 @@ ngx_http_scgi_process_header(ngx_http_request_t *r)
                 ngx_str_set(&u->headers_in.status_line, "200 OK");
             }
 
-            if (u->state) {
+            if (u->state && u->state->status == 0) {
                 u->state->status = u->headers_in.status_n;
             }
 
index f55e606c8f1586d84fea31c6cf0b3dc9e101fa26..17dfc3b3ac78784a365c1615437e31947e2372bf 100644 (file)
@@ -1017,7 +1017,7 @@ ngx_http_uwsgi_process_status_line(ngx_http_request_t *r)
         return ngx_http_uwsgi_process_header(r);
     }
 
-    if (u->state) {
+    if (u->state && u->state->status == 0) {
         u->state->status = status->code;
     }
 
@@ -1145,7 +1145,7 @@ ngx_http_uwsgi_process_header(ngx_http_request_t *r)
                 ngx_str_set(&u->headers_in.status_line, "200 OK");
             }
 
-            if (u->state) {
+            if (u->state && u->state->status == 0) {
                 u->state->status = u->headers_in.status_n;
             }