diff src/event/quic/ngx_event_quic.h @ 8735: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 {