<div dir="ltr">Hi,<div><br>nginx quic splits 4-tuple into ngx_quic_socket_t for receiving packets and ngx_quic_path_t for sending packets.<br><br>nginx also has struct ngx_quic_send_ctx_t for parsing received packets and assembling the packet to be sent. So, shall we split ngx_quic_send_ctx_t based on rx and tx?<br><br>ngx_quic_send_ctx_t<br><blockquote style="margin:0 0 0 40px;border:none;padding:0px">enum ssl_encryption_level_t level;</blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">ngx_quic_buffer_t crypto;<br>uint64_t crypto_sent;<br>uint64_t largest_ack; /* received from peer */</blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">uint64_t pnum; /* to be sent */<br>ngx_queue_t frames; /* generated frames */<br>ngx_queue_t sending; /* frames assigned to pkt */<br>ngx_queue_t sent; /* frames waiting ACK */</blockquote><br>ngx_quic_recv_ctx_t<br><blockquote style="margin:0 0 0 40px;border:none;padding:0px">enum ssl_encryption_level_t level;<br>uint64_t largest_pn; /* received from peer */<br>uint64_t pending_ack; /* non sent ack-eliciting */<br>uint64_t largest_range;<br>uint64_t first_range;<br>ngx_msec_t largest_received;<br>ngx_msec_t ack_delay_start;<br>ngx_uint_t nranges;<br>ngx_quic_ack_range_t ranges[NGX_QUIC_MAX_RANGES];<br>ngx_uint_t send_ack;</blockquote><br>Best regards<br>Yu Zhu</div></div>