Mercurial > hg > nginx
comparison src/event/ngx_event_quic.c @ 8392:5ffb21c5c93d quic
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.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Mon, 18 May 2020 13:54:35 +0300 |
parents | a9cc1627cf1c |
children | e169cce912c7 |
comparison
equal
deleted
inserted
replaced
8391:2d5db7faa788 | 8392:5ffb21c5c93d |
---|---|
3194 } | 3194 } |
3195 | 3195 |
3196 if (i == 0) { | 3196 if (i == 0) { |
3197 wait = nswait; | 3197 wait = nswait; |
3198 | 3198 |
3199 } else if (nswait > 0 && nswait < wait) { | 3199 } else if (nswait > 0 && (wait == 0 || wait > nswait)) { |
3200 wait = nswait; | 3200 wait = nswait; |
3201 } | 3201 } |
3202 } | 3202 } |
3203 | 3203 |
3204 if (wait > 0) { | 3204 if (wait > 0) { |
3286 return NGX_ERROR; | 3286 return NGX_ERROR; |
3287 } | 3287 } |
3288 | 3288 |
3289 /* move frames group to the end of queue */ | 3289 /* move frames group to the end of queue */ |
3290 ngx_queue_add(&ctx->sent, &range); | 3290 ngx_queue_add(&ctx->sent, &range); |
3291 | |
3292 wait = qc->tp.max_ack_delay; | |
3291 | 3293 |
3292 } while (q != ngx_queue_sentinel(&ctx->sent)); | 3294 } while (q != ngx_queue_sentinel(&ctx->sent)); |
3293 | 3295 |
3294 *waitp = wait; | 3296 *waitp = wait; |
3295 | 3297 |