mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 07:37:02 +02:00
MINOR: quic-be: helper quic_reuse_srv_params() function to reuse server params (0-RTT)
Implement quic_reuse_srv_params() whose role it to reuse the ALPN used from a first connection to a QUIC backend alongside its transport parameters from a null terminated string <alpn> and a quic_early_transport_params struct passed as parameters.
This commit is contained in:
parent
e59be9473b
commit
61f7cf9e94
@ -82,6 +82,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);
|
void qc_check_close_on_released_mux(struct quic_conn *qc);
|
||||||
int quic_stateless_reset_token_cpy(unsigned char *pos, size_t len,
|
int quic_stateless_reset_token_cpy(unsigned char *pos, size_t len,
|
||||||
const unsigned char *salt, size_t saltlen);
|
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);
|
||||||
|
|
||||||
/* Free the CIDs attached to <conn> QUIC connection. */
|
/* Free the CIDs attached to <conn> QUIC connection. */
|
||||||
static inline void free_quic_conn_cids(struct quic_conn *conn)
|
static inline void free_quic_conn_cids(struct quic_conn *conn)
|
||||||
|
@ -285,6 +285,30 @@ int quic_set_app_ops(struct quic_conn *qc, const unsigned char *alpn, size_t alp
|
|||||||
return 1;
|
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
|
/* 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
|
* 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.
|
* <qc.err> before as it is reused for the CONNECTION_CLOSE frame.
|
||||||
|
Loading…
Reference in New Issue
Block a user