comparison src/event/quic/ngx_event_quic.h @ 9052:2e51cf3ffd90 quic

QUIC: defer stream removal until all its data is acked. Previously, stream was kept alive until all its data is sent. This resulted in disabling retransmission of final part of stream when QUIC connection was closed right after closing stream connection.
author Roman Arutyunyan <arut@nginx.com>
date Mon, 22 Aug 2022 15:33:23 +0400
parents 37d5dddabaea
children 1192923be0aa
comparison
equal deleted inserted replaced
9051:37d5dddabaea 9052:2e51cf3ffd90
83 ngx_rbtree_node_t node; 83 ngx_rbtree_node_t node;
84 ngx_queue_t queue; 84 ngx_queue_t queue;
85 ngx_connection_t *parent; 85 ngx_connection_t *parent;
86 ngx_connection_t *connection; 86 ngx_connection_t *connection;
87 uint64_t id; 87 uint64_t id;
88 uint64_t sent;
88 uint64_t acked; 89 uint64_t acked;
89 uint64_t send_max_data; 90 uint64_t send_max_data;
90 uint64_t send_offset; 91 uint64_t send_offset;
91 uint64_t send_final_size; 92 uint64_t send_final_size;
92 uint64_t recv_max_data; 93 uint64_t recv_max_data;
96 uint64_t recv_final_size; 97 uint64_t recv_final_size;
97 ngx_quic_buffer_t send; 98 ngx_quic_buffer_t send;
98 ngx_quic_buffer_t recv; 99 ngx_quic_buffer_t recv;
99 ngx_quic_stream_send_state_e send_state; 100 ngx_quic_stream_send_state_e send_state;
100 ngx_quic_stream_recv_state_e recv_state; 101 ngx_quic_stream_recv_state_e recv_state;
101 ngx_uint_t cancelable; /* unsigned cancelable:1; */ 102 unsigned cancelable:1;
103 unsigned fin_acked:1;
102 }; 104 };
103 105
104 106
105 void ngx_quic_recvmsg(ngx_event_t *ev); 107 void ngx_quic_recvmsg(ngx_event_t *ev);
106 void ngx_quic_rbtree_insert_value(ngx_rbtree_node_t *temp, 108 void ngx_quic_rbtree_insert_value(ngx_rbtree_node_t *temp,