From 4137b2d31626517968c927844fd426b9e100f29c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20L=C3=A9caille?= Date: Fri, 17 Dec 2021 18:24:16 +0100 Subject: [PATCH] MINOR: quic: Do not expect to receive only one O-RTT packet There is nothing about this in the RFC. We must support to receive several 0-RTT packets before the handshake has completed. --- src/xprt_quic.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/xprt_quic.c b/src/xprt_quic.c index 9d5f6ebaf..3f63cd3f8 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -3091,7 +3091,9 @@ struct task *quic_conn_io_cb(struct task *t, void *context, unsigned int state) st = HA_ATOMIC_LOAD(&qc->state); TRACE_ENTER(QUIC_EV_CONN_HDSHK, ctx->conn, &st); ssl_err = SSL_ERROR_NONE; - zero_rtt = !MT_LIST_ISEMPTY(&qc->els[QUIC_TLS_ENC_LEVEL_EARLY_DATA].rx.pqpkts); + zero_rtt = st < QUIC_HS_ST_COMPLETE && + (!MT_LIST_ISEMPTY(&qc->els[QUIC_TLS_ENC_LEVEL_EARLY_DATA].rx.pqpkts) || + qc_el_rx_pkts(&qc->els[QUIC_TLS_ENC_LEVEL_EARLY_DATA])); start: if (!quic_get_tls_enc_levels(&tel, &next_tel, st, zero_rtt)) goto err;