changeset 9001:868e1b76c956 quic

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.
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 02 Feb 2022 15:57:08 +0300
parents cd8018bc81a5
children 740e8b99519d
files src/event/quic/ngx_event_quic_output.c
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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);
     }