]> git.kaiwu.me - nginx.git/commitdiff
HTTP/2: improved handling of "keepalive_timeout 0".
authorMaxim Dounin <mdounin@mdounin.ru>
Thu, 25 Mar 2021 22:44:57 +0000 (01:44 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Thu, 25 Mar 2021 22:44:57 +0000 (01:44 +0300)
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.

src/http/v2/ngx_http_v2.c

index 005db0b8e98269488dad00650bb8fdd49825b7ed..85632058954289927f580c25dcd5bbb9ff352a51 100644 (file)
@@ -1368,7 +1368,9 @@ ngx_http_v2_state_headers(ngx_http_v2_connection_t *h2c, u_char *pos,
     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) {