From: Frédéric Lécaille Date: Tue, 4 Jan 2022 15:57:37 +0000 (+0100) Subject: MINOR: quic: Flag asap the connection having reached the anti-amplification limit X-Git-Tag: v2.6-dev1~167 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=41a076087bcf7e2b8cf6c3373a485c5a2e38c4a2;p=thirdparty%2Fhaproxy.git MINOR: quic: Flag asap the connection having reached the anti-amplification limit The best location to flag the connection is just after having built the packet which reached the anti-amplication limit. --- diff --git a/src/xprt_quic.c b/src/xprt_quic.c index 0ceb98abe3..7b371fd635 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -2484,8 +2484,6 @@ static int qc_prep_pkts(struct quic_conn *qc, struct qring *qr, /* Leave room for the datagram header */ pos += dg_headlen; if (!quic_peer_validated_addr(qc) && objt_listener(qc->conn->target)) { - if (qc->tx.prep_bytes >= 3 * qc->rx.bytes) - qc->flags |= QUIC_FL_CONN_ANTI_AMPLIFICATION_REACHED; end = pos + QUIC_MIN(qc->path->mtu, 3 * qc->rx.bytes - qc->tx.prep_bytes); } else { @@ -4869,6 +4867,8 @@ static struct quic_tx_packet *qc_build_pkt(unsigned char **pos, /* Consume a packet number */ qel->pktns->tx.next_pn++; qc->tx.prep_bytes += pkt->len; + if (qc->tx.prep_bytes >= 3 * qc->rx.bytes) + HA_ATOMIC_OR(&qc->flags, QUIC_FL_CONN_ANTI_AMPLIFICATION_REACHED); /* Now that a correct packet is built, let us consume <*pos> buffer. */ *pos = end; /* Attach the built packet to its tree. */