[PATCH 05 of 12] Upstream: simplified u->state->status handling
Maxim Dounin
mdounin at mdounin.ru
Fri Aug 8 20:09:00 UTC 2025
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1754683251 -10800
# Fri Aug 08 23:00:51 2025 +0300
# Node ID 8466023cd0bec68089048f45e1e4c3985d54678e
# Parent 367106bfe31eddfa021fab9403fcefdc8243bf72
Upstream: simplified u->state->status handling.
Instead of assigning u->state->status when parsing a status line, and
then overwriting it if an error happens, we now assign u->state->status
after all input headers are parsed.
This simplifies the code, and also avoids additional checks needed to
handle parsing the headers from cache. It is also simplifies upcoming
changes to handle 1xx interim responses.
diff --git a/src/http/modules/ngx_http_fastcgi_module.c b/src/http/modules/ngx_http_fastcgi_module.c
--- a/src/http/modules/ngx_http_fastcgi_module.c
+++ b/src/http/modules/ngx_http_fastcgi_module.c
@@ -2063,10 +2063,6 @@ ngx_http_fastcgi_process_header(ngx_http
ngx_str_set(&u->headers_in.status_line, "200 OK");
}
- if (u->state && u->state->status == 0) {
- u->state->status = u->headers_in.status_n;
- }
-
break;
}
diff --git a/src/http/modules/ngx_http_grpc_module.c b/src/http/modules/ngx_http_grpc_module.c
--- a/src/http/modules/ngx_http_grpc_module.c
+++ b/src/http/modules/ngx_http_grpc_module.c
@@ -1867,10 +1867,6 @@ ngx_http_grpc_process_header(ngx_http_re
u->headers_in.status_n = status;
- if (u->state && u->state->status == 0) {
- u->state->status = status;
- }
-
ctx->status = 1;
continue;
diff --git a/src/http/modules/ngx_http_memcached_module.c b/src/http/modules/ngx_http_memcached_module.c
--- a/src/http/modules/ngx_http_memcached_module.c
+++ b/src/http/modules/ngx_http_memcached_module.c
@@ -422,7 +422,6 @@ found:
}
u->headers_in.status_n = 200;
- u->state->status = 200;
u->buffer.pos = p + sizeof(CRLF) - 1;
return NGX_OK;
@@ -434,7 +433,6 @@ found:
u->headers_in.content_length_n = 0;
u->headers_in.status_n = 404;
- u->state->status = 404;
u->buffer.pos = p + sizeof("END" CRLF) - 1;
u->keepalive = 1;
diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c
--- a/src/http/modules/ngx_http_proxy_module.c
+++ b/src/http/modules/ngx_http_proxy_module.c
@@ -1849,17 +1849,9 @@ ngx_http_proxy_process_status_line(ngx_h
u->headers_in.status_n = 200;
u->headers_in.connection_close = 1;
- if (u->state && u->state->status == 0) {
- u->state->status = NGX_HTTP_OK;
- }
-
return NGX_OK;
}
- if (u->state && u->state->status == 0) {
- u->state->status = ctx->status.code;
- }
-
u->headers_in.status_n = ctx->status.code;
len = ctx->status.end - ctx->status.start;
diff --git a/src/http/modules/ngx_http_scgi_module.c b/src/http/modules/ngx_http_scgi_module.c
--- a/src/http/modules/ngx_http_scgi_module.c
+++ b/src/http/modules/ngx_http_scgi_module.c
@@ -1032,10 +1032,6 @@ ngx_http_scgi_process_status_line(ngx_ht
return ngx_http_scgi_process_header(r);
}
- if (u->state && u->state->status == 0) {
- u->state->status = status->code;
- }
-
u->headers_in.status_n = status->code;
len = status->end - status->start;
@@ -1168,10 +1164,6 @@ ngx_http_scgi_process_header(ngx_http_re
ngx_str_set(&u->headers_in.status_line, "200 OK");
}
- if (u->state && u->state->status == 0) {
- u->state->status = u->headers_in.status_n;
- }
-
done:
if (u->headers_in.status_n == NGX_HTTP_SWITCHING_PROTOCOLS
diff --git a/src/http/modules/ngx_http_uwsgi_module.c b/src/http/modules/ngx_http_uwsgi_module.c
--- a/src/http/modules/ngx_http_uwsgi_module.c
+++ b/src/http/modules/ngx_http_uwsgi_module.c
@@ -1261,10 +1261,6 @@ ngx_http_uwsgi_process_status_line(ngx_h
return ngx_http_uwsgi_process_header(r);
}
- if (u->state && u->state->status == 0) {
- u->state->status = status->code;
- }
-
u->headers_in.status_n = status->code;
len = status->end - status->start;
@@ -1397,10 +1393,6 @@ ngx_http_uwsgi_process_header(ngx_http_r
ngx_str_set(&u->headers_in.status_line, "200 OK");
}
- if (u->state && u->state->status == 0) {
- u->state->status = u->headers_in.status_n;
- }
-
done:
if (u->headers_in.status_n == NGX_HTTP_SWITCHING_PROTOCOLS
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -2535,6 +2535,7 @@ ngx_http_upstream_process_header(ngx_htt
/* rc == NGX_OK */
+ u->state->status = u->headers_in.status_n;
u->state->header_time = ngx_current_msec - u->start_time;
if (u->headers_in.status_n >= NGX_HTTP_SPECIAL_RESPONSE) {
More information about the nginx-devel
mailing list