From d6570e17890963f0b7da4dc9220ca89d07d45b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20L=C3=A9caille?= Date: Tue, 29 Mar 2022 17:41:57 +0200 Subject: [PATCH] BUG/MINOR: quic: Missing probing packets when coalescing Before having a look at the next encryption level to build packets if there is no more ack-eliciting frames to send we must check we have not to probe from the current encryption level anymore. If not, we only send one datagram instead of sending two datagrams giving less chance to recover from packet loss. --- src/xprt_quic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xprt_quic.c b/src/xprt_quic.c index bac4ab369..253aa85df 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -2882,7 +2882,7 @@ static int qc_prep_pkts(struct quic_conn *qc, struct qring *qr, * select the next level. */ if ((tel == QUIC_TLS_ENC_LEVEL_INITIAL || tel == QUIC_TLS_ENC_LEVEL_HANDSHAKE) && - (LIST_ISEMPTY(&qel->pktns->tx.frms))) { + (LIST_ISEMPTY(&qel->pktns->tx.frms) && !qel->pktns->tx.pto_probe)) { /* If QUIC_TLS_ENC_LEVEL_HANDSHAKE was already reached let's try QUIC_TLS_ENC_LEVEL_APP */ if (tel == QUIC_TLS_ENC_LEVEL_HANDSHAKE && next_tel == tel) next_tel = QUIC_TLS_ENC_LEVEL_APP;