MINOR: quic: Do not allocate too much ack ranges

Limit the maximum number of ack ranges to QUIC_MAX_ACK_RANGES(32).

Must be backported to 2.6 and 2.7.
diff --git a/include/haproxy/quic_conn-t.h b/include/haproxy/quic_conn-t.h
index 26fd60b..113cc61 100644
--- a/include/haproxy/quic_conn-t.h
+++ b/include/haproxy/quic_conn-t.h
@@ -321,6 +321,9 @@
 	uint64_t last;
 };
 
+/* The maximum number of ack ranges to be built in ACK frames */
+#define QUIC_MAX_ACK_RANGES   32
+
 /* Structure to maintain a set of ACK ranges to be used to build ACK frames. */
 struct quic_arngs {
 	/* ebtree of ACK ranges organized by their first value. */
diff --git a/src/quic_conn.c b/src/quic_conn.c
index 2992ba0..86fcc1e 100644
--- a/src/quic_conn.c
+++ b/src/quic_conn.c
@@ -4246,6 +4246,16 @@
 
 	TRACE_ENTER(QUIC_EV_CONN_RXPKT, qc);
 
+	if (arngs->sz >= QUIC_MAX_ACK_RANGES) {
+		struct eb64_node *last;
+
+		last = eb64_last(&arngs->root);
+		BUG_ON(last == NULL);
+		eb64_delete(last);
+		pool_free(pool_head_quic_arng, last);
+		arngs->sz--;
+	}
+
 	new_ar = pool_alloc(pool_head_quic_arng);
 	if (!new_ar) {
 		TRACE_ERROR("ack range allocation failed", QUIC_EV_CONN_RXPKT, qc);