Mercurial > hg > nginx-quic
diff src/event/quic/ngx_event_quic.h @ 8385:9ce6d80df113 quic
QUIC: simplified quic connection dispatching.
Currently listener contains rbtree with multiple nodes for single QUIC
connection: each corresponding to specific server id. Each udp node points
to same ngx_connection_t, which points to QUIC connection via c->udp field.
Thus when an event handler is called, it only gets ngx_connection_t with
c->udp pointing to QUIC connection. This makes it hard to obtain actual
node which was used to dispatch packet (it requires to repeat DCID lookup).
Additionally, ngx_quic_connection_t->udp field is only needed to keep a
pointer in c->udp. The node is not added into the tree and does not carry
useful information.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Fri, 02 Apr 2021 11:31:37 +0300 |
parents | fc64ab301bad |
children | c8bda5e1e662 |
line wrap: on
line diff
--- a/src/event/quic/ngx_event_quic.h +++ b/src/event/quic/ngx_event_quic.h @@ -64,7 +64,8 @@ #define NGX_QUIC_BUFFER_SIZE 4096 -#define ngx_quic_get_connection(c) ((ngx_quic_connection_t *)(c)->udp) +#define ngx_quic_get_connection(c) \ + (((c)->udp) ? (((ngx_quic_server_id_t *)((c)->udp))->quic) : NULL) typedef struct {