mirror of
https://github.com/nginx/nginx.git
synced 2025-08-06 14:56:15 +08:00
Fixed packet retransmission.
Previously frames in ctx->sent queue could be lost.
This commit is contained in:
parent
9c37591016
commit
60c8a601d0
@ -2586,11 +2586,18 @@ ngx_quic_retransmit(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
q = ngx_queue_head(&ctx->sent);
|
q = ngx_queue_head(&ctx->sent);
|
||||||
start = ngx_queue_data(q, ngx_quic_frame_t, queue);
|
|
||||||
pn = start->pnum;
|
|
||||||
f = start;
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
start = ngx_queue_data(q, ngx_quic_frame_t, queue);
|
||||||
|
|
||||||
|
wait = start->last + qc->tp.max_ack_delay - now;
|
||||||
|
|
||||||
|
if ((ngx_msec_int_t) wait > 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
pn = start->pnum;
|
||||||
|
|
||||||
ngx_queue_init(&range);
|
ngx_queue_init(&range);
|
||||||
|
|
||||||
/* send frames with same packet number to the wire */
|
/* send frames with same packet number to the wire */
|
||||||
@ -2614,12 +2621,6 @@ ngx_quic_retransmit(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx,
|
|||||||
|
|
||||||
} while (q != ngx_queue_sentinel(&ctx->sent));
|
} while (q != ngx_queue_sentinel(&ctx->sent));
|
||||||
|
|
||||||
wait = start->last + qc->tp.max_ack_delay - now;
|
|
||||||
|
|
||||||
if ((ngx_msec_int_t) wait > 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* NGX_DONE is impossible here, such frames don't get into this queue */
|
/* NGX_DONE is impossible here, such frames don't get into this queue */
|
||||||
if (ngx_quic_send_frames(c, &range) != NGX_OK) {
|
if (ngx_quic_send_frames(c, &range) != NGX_OK) {
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
|
Loading…
Reference in New Issue
Block a user