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