Welcome! Log In Create A New Profile

Advanced

[nginx] HTTP/2: socket leak with "return 444" in error_page (ticket #2455).

Roman Arutyunyan
March 13, 2023 09:00AM
details: https://hg.nginx.org/nginx/rev/72627f1cf09e
branches:
changeset: 8147:72627f1cf09e
user: Maxim Dounin <mdounin@mdounin.ru>
date: Fri Mar 10 06:47:48 2023 +0300
description:
HTTP/2: socket leak with "return 444" in error_page (ticket #2455).

Similarly to ticket #274 (7354:1812f1d79d84), early request finalization
without calling ngx_http_run_posted_requests() resulted in a connection
hang (a socket leak) if the 400 (Bad Request) error was generated in
ngx_http_v2_state_process_header() due to invalid request headers and
"return 444" was used in error_page 400.

diffstat:

src/http/v2/ngx_http_v2.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

diffs (28 lines):

diff -r b7d4bfd132d2 -r 72627f1cf09e src/http/v2/ngx_http_v2.c
--- a/src/http/v2/ngx_http_v2.c Wed Mar 08 22:22:47 2023 +0300
+++ b/src/http/v2/ngx_http_v2.c Fri Mar 10 06:47:48 2023 +0300
@@ -1730,6 +1730,7 @@ ngx_http_v2_state_process_header(ngx_htt
size_t len;
ngx_int_t rc;
ngx_table_elt_t *h;
+ ngx_connection_t *fc;
ngx_http_header_t *hh;
ngx_http_request_t *r;
ngx_http_v2_header_t *header;
@@ -1789,6 +1790,7 @@ ngx_http_v2_state_process_header(ngx_htt
}

r = h2c->state.stream->request;
+ fc = r->connection;

/* TODO Optimization: validate headers while parsing. */
if (ngx_http_v2_validate_header(r, header) != NGX_OK) {
@@ -1886,6 +1888,8 @@ error:

h2c->state.stream = NULL;

+ ngx_http_run_posted_requests(fc);
+
return ngx_http_v2_state_header_complete(h2c, pos, end);
}

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] HTTP/2: socket leak with "return 444" in error_page (ticket #2455).

Roman Arutyunyan 467 March 13, 2023 09:00AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 80
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready