mirror of
https://github.com/nginx/nginx.git
synced 2025-06-22 13:51:12 +08:00
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:
parent
92df22200e
commit
0041c3f6b7
@ -3196,7 +3196,7 @@ ngx_quic_retransmit_handler(ngx_event_t *ev)
|
|||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
wait = nswait;
|
wait = nswait;
|
||||||
|
|
||||||
} else if (nswait > 0 && nswait < wait) {
|
} else if (nswait > 0 && (wait == 0 || wait > nswait)) {
|
||||||
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 */
|
/* move frames group to the end of queue */
|
||||||
ngx_queue_add(&ctx->sent, &range);
|
ngx_queue_add(&ctx->sent, &range);
|
||||||
|
|
||||||
|
wait = qc->tp.max_ack_delay;
|
||||||
|
|
||||||
} while (q != ngx_queue_sentinel(&ctx->sent));
|
} while (q != ngx_queue_sentinel(&ctx->sent));
|
||||||
|
|
||||||
*waitp = wait;
|
*waitp = wait;
|
||||||
|
Loading…
Reference in New Issue
Block a user