aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2022-02-02 15:57:08 +0300
committerSergey Kandaurov <pluknet@nginx.com>2022-02-02 15:57:08 +0300
commit8a61c89a276ae5626ff84f6dd1e9da218754a313 (patch)
tree98c8adf66fcd4029d69664114a4c6cd8af6f0a24 /src
parent3b4d10caf6eb3cb7b86c1b6064869b935a7d0076 (diff)
downloadnginx-8a61c89a276ae5626ff84f6dd1e9da218754a313.tar.gz
nginx-8a61c89a276ae5626ff84f6dd1e9da218754a313.zip
QUIC: do not arm loss detection timer if nothing was sent.
Notably, this became quite practicable after the recent fix in cd8018bc81a5. Additionally, do not arm loss detection timer on connection termination.
Diffstat (limited to 'src')
-rw-r--r--src/event/quic/ngx_event_quic_output.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/event/quic/ngx_event_quic_output.c b/src/event/quic/ngx_event_quic_output.c
index 103dd0e5c..ebfe0cfc2 100644
--- a/src/event/quic/ngx_event_quic_output.c
+++ b/src/event/quic/ngx_event_quic_output.c
@@ -104,7 +104,12 @@ ngx_quic_output(ngx_connection_t *c)
return NGX_ERROR;
}
- if (in_flight != cg->in_flight && !qc->send_timer_set && !qc->closing) {
+ if (in_flight == cg->in_flight || qc->closing) {
+ /* no ack-eliciting data was sent or we are done */
+ return NGX_OK;
+ }
+
+ if (!qc->send_timer_set) {
qc->send_timer_set = 1;
ngx_add_timer(c->read, qc->tp.max_idle_timeout);
}