]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: quic: extend traces on CID allocation
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 7 Nov 2025 08:38:14 +0000 (09:38 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 10 Nov 2025 11:10:14 +0000 (12:10 +0100)
Add new traces to detect the CID generation method and also when an
Initial packet is requeued due to CID collision.

src/quic_cid.c
src/quic_rx.c

index 403b3ffe2aff8ff34efa37c076be692a193b39e8..44698e1db1f8dfa1c01156c32519d30e632aff4e 100644 (file)
@@ -159,13 +159,17 @@ int quic_cid_generate(struct quic_connection_id *conn_id)
        conn_id->cid.len = QUIC_HAP_CID_LEN;
 
        if (quic_newcid_from_hash64) {
+               TRACE_DEVEL("calculate CID value from conn hash", QUIC_EV_CONN_TXPKT, qc);
                quic_newcid_from_hash64(conn_id->cid.data, conn_id->cid.len, qc->hash64,
                                        global.cluster_secret, sizeof(global.cluster_secret));
        }
-       else if (RAND_bytes(conn_id->cid.data, conn_id->cid.len) != 1) {
-               /* TODO: RAND_bytes() should be replaced */
-               TRACE_ERROR("RAND_bytes() failed", QUIC_EV_CONN_TXPKT, qc);
-               goto err;
+       else {
+               TRACE_DEVEL("generate CID value from random generator", QUIC_EV_CONN_TXPKT, qc);
+               if (RAND_bytes(conn_id->cid.data, conn_id->cid.len) != 1) {
+                       /* TODO: RAND_bytes() should be replaced */
+                       TRACE_ERROR("RAND_bytes() failed", QUIC_EV_CONN_TXPKT, qc);
+                       goto err;
+               }
        }
 
        if (quic_stateless_reset_token_init(conn_id) != 1) {
@@ -202,6 +206,7 @@ int quic_cid_derive_from_odcid(struct quic_connection_id *conn_id,
 
        conn_id->cid.len = QUIC_HAP_CID_LEN;
 
+       TRACE_DEVEL("derive CID value from a client ODCID", QUIC_EV_CONN_TXPKT);
        /* Derive the new CID value from original CID. */
        conn_id->cid = quic_derive_cid(orig, addr);
 
index c9ae4a5d4647a1eaa7e1d2ec35f4d185415cfaf5..62d0c9680dcaeb0d71b92be54d47185178e9a584 100644 (file)
@@ -1798,6 +1798,7 @@ static struct quic_conn *quic_rx_pkt_retrieve_conn(struct quic_rx_packet *pkt,
                                 * <new_tid> will be set to redispatch the
                                 * current packet.
                                 */
+                               TRACE_STATE("duplicate CID on Initial", QUIC_EV_CONN_LPKT);
                                pool_free(pool_head_quic_connection_id, conn_id);
                                quic_conn_release(qc);
                                qc = NULL;
@@ -2346,6 +2347,7 @@ int quic_dgram_parse(struct quic_dgram *dgram, struct quic_conn *from_qc,
                         */
                        if (!qc) {
                                if (new_tid >= 0) {
+                                       TRACE_STATE("re-enqueue packet to conn thread", QUIC_EV_CONN_LPKT);
                                        MT_LIST_APPEND(&quic_dghdlrs[new_tid].dgrams,
                                                       &dgram->handler_list);
                                        tasklet_wakeup(quic_dghdlrs[new_tid].task);