From 5f6c25e44739a273ed2c38db30fdffe32a0a6112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20L=C3=A9caille?= Date: Wed, 24 Aug 2022 16:23:44 +0200 Subject: [PATCH] Revert "BUG/MINOR: quix: Memleak for non in flight TX packets" This reverts commit da9c441886dbfa02840a93e367f65fd6d312c835. Indeed this commit prevented the ACK only packets to be used as other packets when they are acknowledged. Even if not ack-eliciting packets they are acknowledged alongside others packets. Such acknowledged ACK only packets must be used for instance to compute the RTT. Must be backported to 2.6 if da9c441 was backported to 2.6. --- src/xprt_quic.c | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/xprt_quic.c b/src/xprt_quic.c index 1950f75e8..869debb9b 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -3253,21 +3253,12 @@ int qc_send_ppkts(struct buffer *buf, struct ssl_sock_ctx *ctx) } qc->path->in_flight += pkt->in_flight_len; pkt->pktns->tx.in_flight += pkt->in_flight_len; - next_pkt = pkt->next; - TRACE_DATA("sent pkt", QUIC_EV_CONN_SPPKTS, qc, pkt); - if (pkt->in_flight_len) { - /* Ack-eliciting packets or packets with a PADDING frame */ - quic_tx_packet_refinc(pkt); - eb64_insert(&pkt->pktns->tx.pkts, &pkt->pn_node); + if (pkt->in_flight_len) qc_set_timer(qc); - } - else { - /* Note that we can safely free this packet: There is no - * ack-eliciting frame attached to it. This may be an ACK - * or CONNECTION_CLOSE only packet for instance. - */ - pool_free(pool_head_quic_tx_packet, pkt); - } + TRACE_DATA("sent pkt", QUIC_EV_CONN_SPPKTS, qc, pkt); + next_pkt = pkt->next; + quic_tx_packet_refinc(pkt); + eb64_insert(&pkt->pktns->tx.pkts, &pkt->pn_node); } }