]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: quic: Missing probing packets when coalescing
authorFrédéric Lécaille <flecaille@haproxy.com>
Tue, 29 Mar 2022 15:41:57 +0000 (17:41 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 1 Apr 2022 14:22:52 +0000 (16:22 +0200)
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

index bac4ab36923c1cc229f49e08620ca5eeb2ee6284..253aa85df46747ff4a46da6217c6051723c2c6f6 100644 (file)
@@ -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;