]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: quic: fix ODCID initialization on frontend side
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 16 Jun 2025 08:02:47 +0000 (10:02 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 16 Jun 2025 08:09:37 +0000 (10:09 +0200)
QUIC support on the backend side has been implemented recently. This has
lead to some adjustment on qc_new_conn() to handle both FE and BE sides,
with some of these changes performed by the following commit.

  29fb1aee57288a8b16ed91771ae65c2bfa400128
  MINOR: quic-be: QUIC connection allocation adaptation (qc_new_conn())

An issue was introduced during some code adjustement. Initialization of
ODCID was incorrectly performed, which caused haproxy to emit invalid
transport parameters. Most of the clients detected this and immediatly
closed the connection.

Fix this by adjusting qc_lstnr_params_init() invokation : replace
<qc.dcid>, which in fact points to the received SCID, by <qc.odcid>
whose purpose is dedicated to original DCID storage.

This fixes github issue #3006. This issue also caused the majority of
tests in the interop to fail.

No backport needed.

src/quic_conn.c

index 82cec926dad04a3b688e80d884e6ceda46493c2c..8912dfc19cc9e4b7924fccd5d4d7ed665b1165d1 100644 (file)
@@ -1306,7 +1306,7 @@ struct quic_conn *qc_new_conn(const struct quic_version *qv, int ipv4,
        if (l) {
                qc_lstnr_params_init(qc, &l->bind_conf->quic_params,
                                     conn_id->stateless_reset_token,
-                                    qc->dcid.data, qc->dcid.len,
+                                    qc->odcid.data, qc->odcid.len,
                                     qc->scid.data, qc->scid.len, token_odcid);
        }
        else {