# HG changeset patch # User Vladimir Homutov # Date 1589799275 -10800 # Node ID 5ffb21c5c93d1fe11bb4855262a70cbed81c2a5a # Parent 2d5db7faa78843c22f5a147e6ec7b94490be6448 Fixed frame retransmissions. It was possible that retransmit timer was not set after the first retransmission attempt, due to ngx_quic_retransmit() did not set wait time properly, and the condition in retransmit handler was incorrect. diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c --- a/src/event/ngx_event_quic.c +++ b/src/event/ngx_event_quic.c @@ -3196,7 +3196,7 @@ ngx_quic_retransmit_handler(ngx_event_t if (i == 0) { wait = nswait; - } else if (nswait > 0 && nswait < wait) { + } else if (nswait > 0 && (wait == 0 || wait > nswait)) { wait = nswait; } } @@ -3289,6 +3289,8 @@ ngx_quic_retransmit(ngx_connection_t *c, /* move frames group to the end of queue */ ngx_queue_add(&ctx->sent, &range); + wait = qc->tp.max_ack_delay; + } while (q != ngx_queue_sentinel(&ctx->sent)); *waitp = wait;