[nginx] Upstream: fix $upstream_status variable.
Ruslan Ermilov
ru at nginx.com
Wed Feb 12 14:53:37 UTC 2014
details: http://hg.nginx.org/nginx/rev/d15822784cf9
branches:
changeset: 5575:d15822784cf9
user: Piotr Sikora <piotr at cloudflare.com>
date: Tue Feb 11 21:54:42 2014 -0800
description:
Upstream: fix $upstream_status variable.
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 at cloudflare.com>
diffstat:
src/http/modules/ngx_http_fastcgi_module.c | 2 +-
src/http/modules/ngx_http_proxy_module.c | 2 +-
src/http/modules/ngx_http_scgi_module.c | 4 ++--
src/http/modules/ngx_http_uwsgi_module.c | 4 ++--
4 files changed, 6 insertions(+), 6 deletions(-)
diffs (66 lines):
diff -r cff36d2d7fe6 -r d15822784cf9 src/http/modules/ngx_http_fastcgi_module.c
--- a/src/http/modules/ngx_http_fastcgi_module.c Tue Feb 11 20:54:16 2014 +0800
+++ b/src/http/modules/ngx_http_fastcgi_module.c Tue Feb 11 21:54:42 2014 -0800
@@ -1584,7 +1584,7 @@ ngx_http_fastcgi_process_header(ngx_http
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;
}
diff -r cff36d2d7fe6 -r d15822784cf9 src/http/modules/ngx_http_proxy_module.c
--- a/src/http/modules/ngx_http_proxy_module.c Tue Feb 11 20:54:16 2014 +0800
+++ b/src/http/modules/ngx_http_proxy_module.c Tue Feb 11 21:54:42 2014 -0800
@@ -1362,7 +1362,7 @@ ngx_http_proxy_process_status_line(ngx_h
return NGX_OK;
}
- if (u->state) {
+ if (u->state && u->state->status == 0) {
u->state->status = ctx->status.code;
}
diff -r cff36d2d7fe6 -r d15822784cf9 src/http/modules/ngx_http_scgi_module.c
--- a/src/http/modules/ngx_http_scgi_module.c Tue Feb 11 20:54:16 2014 +0800
+++ b/src/http/modules/ngx_http_scgi_module.c Tue Feb 11 21:54:42 2014 -0800
@@ -885,7 +885,7 @@ ngx_http_scgi_process_status_line(ngx_ht
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_re
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;
}
diff -r cff36d2d7fe6 -r d15822784cf9 src/http/modules/ngx_http_uwsgi_module.c
--- a/src/http/modules/ngx_http_uwsgi_module.c Tue Feb 11 20:54:16 2014 +0800
+++ b/src/http/modules/ngx_http_uwsgi_module.c Tue Feb 11 21:54:42 2014 -0800
@@ -1017,7 +1017,7 @@ ngx_http_uwsgi_process_status_line(ngx_h
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_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;
}
More information about the nginx-devel
mailing list