diff src/core/ngx_connection.c @ 8704:13f7085b90d2 quic

Merged with the default branch.
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 17 Feb 2021 14:48:35 +0300
parents 532fe796b0e2 6d98f29867e8
children 6674a50cbb6c
line wrap: on
line diff
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -1316,6 +1316,7 @@ ngx_drain_connections(ngx_cycle_t *cycle
                       cycle->connection_n);
     }
 
+    c = NULL;
     n = ngx_max(ngx_min(32, cycle->reusable_connections_n / 8), 1);
 
     for (i = 0; i < n; i++) {
@@ -1332,6 +1333,21 @@ ngx_drain_connections(ngx_cycle_t *cycle
         c->close = 1;
         c->read->handler(c->read);
     }
+
+    if (cycle->free_connection_n == 0 && c && c->reusable) {
+
+        /*
+         * if no connections were freed, try to reuse the last
+         * connection again: this should free it as long as
+         * previous reuse moved it to lingering close
+         */
+
+        ngx_log_debug0(NGX_LOG_DEBUG_CORE, c->log, 0,
+                       "reusing connection again");
+
+        c->close = 1;
+        c->read->handler(c->read);
+    }
 }