[nginx] HTTP/2: improved handling of "keepalive_timeout 0".

Maxim Dounin mdounin at mdounin.ru
Thu Mar 25 22:45:51 UTC 2021


details:   https://hg.nginx.org/nginx/rev/ade8160120c1
branches:  
changeset: 7805:ade8160120c1
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Fri Mar 26 01:44:57 2021 +0300
description:
HTTP/2: improved handling of "keepalive_timeout 0".

Without explicit handling, a zero timer was actually added, leading to
multiple unneeded syscalls.  Further, sending GOAWAY frame early might
be beneficial for clients.

Reported by Sergey Kandaurov.

diffstat:

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

diffs (14 lines):

diff -r 4a9d28f8f39e -r ade8160120c1 src/http/v2/ngx_http_v2.c
--- a/src/http/v2/ngx_http_v2.c	Wed Mar 24 14:03:33 2021 +0300
+++ b/src/http/v2/ngx_http_v2.c	Fri Mar 26 01:44:57 2021 +0300
@@ -1368,7 +1368,9 @@ ngx_http_v2_state_headers(ngx_http_v2_co
     clcf = ngx_http_get_module_loc_conf(h2c->http_connection->conf_ctx,
                                         ngx_http_core_module);
 
-    if (h2c->connection->requests >= clcf->keepalive_requests) {
+    if (clcf->keepalive_timeout == 0
+        || h2c->connection->requests >= clcf->keepalive_requests)
+    {
         h2c->goaway = 1;
 
         if (ngx_http_v2_send_goaway(h2c, NGX_HTTP_V2_NO_ERROR) == NGX_ERROR) {


More information about the nginx-devel mailing list