aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/http/ngx_http_request.c5
-rw-r--r--src/http/v2/ngx_http_v2.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index 68d81e932..d129f8079 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -3437,6 +3437,9 @@ ngx_http_set_lingering_close(ngx_connection_t *c)
return;
}
+ c->close = 0;
+ ngx_reusable_connection(c, 1);
+
ngx_add_timer(rev, clcf->lingering_timeout);
if (rev->ready) {
@@ -3461,7 +3464,7 @@ ngx_http_lingering_close_handler(ngx_event_t *rev)
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0,
"http lingering close handler");
- if (rev->timedout) {
+ if (rev->timedout || c->close) {
ngx_http_close_request(r, 0);
return;
}
diff --git a/src/http/v2/ngx_http_v2.c b/src/http/v2/ngx_http_v2.c
index 7c1ba597f..2af3ef7e5 100644
--- a/src/http/v2/ngx_http_v2.c
+++ b/src/http/v2/ngx_http_v2.c
@@ -767,6 +767,9 @@ ngx_http_v2_lingering_close(ngx_connection_t *c)
return;
}
+ c->close = 0;
+ ngx_reusable_connection(c, 1);
+
ngx_add_timer(rev, clcf->lingering_timeout);
if (rev->ready) {
@@ -791,7 +794,7 @@ ngx_http_v2_lingering_close_handler(ngx_event_t *rev)
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0,
"http2 lingering close handler");
- if (rev->timedout) {
+ if (rev->timedout || c->close) {
ngx_http_close_connection(c);
return;
}