From: Frédéric Lécaille Date: Fri, 17 Dec 2021 17:24:16 +0000 (+0100) Subject: MINOR: quic: Do not expect to receive only one O-RTT packet X-Git-Tag: v2.6-dev1~251 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4137b2d31626517968c927844fd426b9e100f29c;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/xprt_quic.c b/src/xprt_quic.c index 9d5f6ebafc..3f63cd3f80 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;