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.
This commit is contained in:
Vladimir Homutov 2020-05-18 13:54:35 +03:00
parent 7d4864b89a
commit d39920689b
1 changed files with 3 additions and 1 deletions

View File

@ -3196,7 +3196,7 @@ ngx_quic_retransmit_handler(ngx_event_t *ev)
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, ngx_quic_send_ctx_t *ctx,
/* 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;