diff --git a/src/quic_tx.c b/src/quic_tx.c index 37f46fe73..9a0898e5d 100644 --- a/src/quic_tx.c +++ b/src/quic_tx.c @@ -2012,7 +2012,20 @@ static int qc_do_build_pkt(unsigned char *pos, const unsigned char *end, goto comp_pkt_len; } - if (!ack_frm_len && !qel->pktns->tx.pto_probe) + if (qel->pktns->tx.pto_probe) { + /* If a probing packets was asked and could not be built, + * this is not because there was not enough room, but due to + * its frames which were already acknowledeged. + * (see qc_stream_frm_is_acked()) called by qc_build_frms(). + * + * That said, the consequence must be the same: cancelling + * the packet building as if there was not enough room. + */ + qel->pktns->tx.pto_probe--; + goto no_room; + } + + if (!ack_frm_len) goto no_room; } }