diff --git a/include/haproxy/quic_tp.h b/include/haproxy/quic_tp.h index d3bdd18c9..651e95cdb 100644 --- a/include/haproxy/quic_tp.h +++ b/include/haproxy/quic_tp.h @@ -26,6 +26,9 @@ int qc_lstnr_params_init(struct quic_conn *qc, const unsigned char *dcid, size_t dcidlen, const unsigned char *scid, size_t scidlen, const struct quic_cid *token_odcid); +void qc_srv_params_init(struct quic_conn *qc, + const struct quic_transport_params *srv_params, + const unsigned char *scid, size_t scidlen); /* Dump transport parameter connection ID value if present (non null length). * Used only for debugging purposes. diff --git a/src/quic_tp.c b/src/quic_tp.c index caf66577e..4b081e2c4 100644 --- a/src/quic_tp.c +++ b/src/quic_tp.c @@ -828,3 +828,21 @@ int qc_lstnr_params_init(struct quic_conn *qc, return 1; } +/* QUIC client (or haproxy server) only function. + * Initialize the local transport parameters from + * coming from configuration and source connection ID). + * Never fails. + */ +void qc_srv_params_init(struct quic_conn *qc, + const struct quic_transport_params *srv_params, + const unsigned char *scid, size_t scidlen) +{ + struct quic_transport_params *rx_params = &qc->rx.params; + + /* Copy the transport parameters. */ + *rx_params = *srv_params; + /* Copy the initial source connection ID. */ + memcpy(rx_params->initial_source_connection_id.data, scid, scidlen); + rx_params->initial_source_connection_id.len = scidlen; + TRACE_PROTO("\nRX(local) transp. params.", QUIC_EV_TRANSP_PARAMS, qc, rx_params); +}