Mercurial > hg > nginx
comparison src/event/quic/ngx_event_quic.c @ 8822:ad046179eb91 quic
QUIC: handle EAGAIN properly on UDP sockets.
Previously, the error was ignored leading to unnecessary retransmits.
Now, unsent frames are returned into output queue, state is reset, and
timer is started for the next send attempt.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Wed, 28 Jul 2021 17:23:18 +0300 |
parents | 4009f120cad4 |
children | fe919fd63b0b |
comparison
equal
deleted
inserted
replaced
8821:d80365ca678d | 8822:ad046179eb91 |
---|---|
253 ngx_rbtree_init(&qc->streams.tree, &qc->streams.sentinel, | 253 ngx_rbtree_init(&qc->streams.tree, &qc->streams.sentinel, |
254 ngx_quic_rbtree_insert_stream); | 254 ngx_quic_rbtree_insert_stream); |
255 | 255 |
256 for (i = 0; i < NGX_QUIC_SEND_CTX_LAST; i++) { | 256 for (i = 0; i < NGX_QUIC_SEND_CTX_LAST; i++) { |
257 ngx_queue_init(&qc->send_ctx[i].frames); | 257 ngx_queue_init(&qc->send_ctx[i].frames); |
258 ngx_queue_init(&qc->send_ctx[i].sending); | |
258 ngx_queue_init(&qc->send_ctx[i].sent); | 259 ngx_queue_init(&qc->send_ctx[i].sent); |
259 qc->send_ctx[i].largest_pn = NGX_QUIC_UNSET_PN; | 260 qc->send_ctx[i].largest_pn = NGX_QUIC_UNSET_PN; |
260 qc->send_ctx[i].largest_ack = NGX_QUIC_UNSET_PN; | 261 qc->send_ctx[i].largest_ack = NGX_QUIC_UNSET_PN; |
261 qc->send_ctx[i].largest_range = NGX_QUIC_UNSET_PN; | 262 qc->send_ctx[i].largest_range = NGX_QUIC_UNSET_PN; |
262 qc->send_ctx[i].pending_ack = NGX_QUIC_UNSET_PN; | 263 qc->send_ctx[i].pending_ack = NGX_QUIC_UNSET_PN; |