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;