MINOR: quic-be: helper quic_reuse_srv_params() function to reuse server params (0-RTT)

Implement quic_reuse_srv_params() whose role is to reuse the ALPN negotiated
during a first connection to a QUIC backend alongside its transport parameters.
This commit is contained in:
Frederic Lecaille 2025-07-31 15:47:03 +02:00
parent 33564ca54c
commit 41e40eb431
2 changed files with 27 additions and 0 deletions

View File

@ -81,6 +81,9 @@ void qc_idle_timer_rearm(struct quic_conn *qc, int read, int arm_ack);
void qc_check_close_on_released_mux(struct quic_conn *qc);
int quic_stateless_reset_token_cpy(unsigned char *pos, size_t len,
const unsigned char *salt, size_t saltlen);
int quic_reuse_srv_params(struct quic_conn *qc,
const unsigned char *alpn,
const struct quic_early_transport_params *etps);
/* Returns true if <qc> is used on the backed side (as a client). */
static inline int qc_is_back(const struct quic_conn *qc)

View File

@ -284,6 +284,30 @@ int quic_set_app_ops(struct quic_conn *qc, const unsigned char *alpn, size_t alp
return 1;
}
/* Try to reuse <alpn> ALPN and <etps> early transport parameters.
* Return 1 if succeeded, 0 if not.
*/
int quic_reuse_srv_params(struct quic_conn *qc,
const unsigned char *alpn,
const struct quic_early_transport_params *etps)
{
int ret = 0;
TRACE_ENTER(QUIC_EV_CONN_NEW, qc);
if (!alpn || !quic_set_app_ops(qc, alpn, strlen((char *)alpn)))
goto err;
qc_early_transport_params_reuse(qc, &qc->tx.params, etps);
ret = 1;
leave:
TRACE_LEAVE(QUIC_EV_CONN_NEW, qc);
return ret;
err:
TRACE_DEVEL("leaving on error", QUIC_EV_CONN_NEW, qc);
goto leave;
}
/* Schedule a CONNECTION_CLOSE emission on <qc> if the MUX has been released
* and all STREAM data are acknowledged. The MUX is responsible to have set
* <qc.err> before as it is reused for the CONNECTION_CLOSE frame.