mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-24 23:31:40 +02:00
BUG/MINOR: quic: Too much prepared retransmissions due to anti-amplification
We must not re-enqueue frames if we can detect in advance they will not be transmitted due to the anti-amplification limit.
This commit is contained in:
parent
009016c0cd
commit
12fd259363
@ -2297,6 +2297,15 @@ static void qc_prep_fast_retrans(struct quic_enc_level *qel,
|
||||
if (!pkt)
|
||||
return;
|
||||
|
||||
/* When building a packet from another one, the field which may increase the
|
||||
* packet size is the packet number. And the maximum increase is 4 bytes.
|
||||
*/
|
||||
if (!quic_peer_validated_addr(qc) && qc_is_listener(qc) &&
|
||||
pkt->len + 4 > 3 * qc->rx.bytes - qc->tx.prep_bytes) {
|
||||
TRACE_PROTO("anti-amplification limit would be reached", QUIC_EV_CONN_PRSAFRM, qc);
|
||||
return;
|
||||
}
|
||||
|
||||
qc_requeue_nacked_pkt_tx_frms(qc, &pkt->frms, &qel->pktns->tx.frms);
|
||||
}
|
||||
|
||||
@ -2344,6 +2353,15 @@ static void qc_prep_hdshk_fast_retrans(struct quic_conn *qc)
|
||||
if (!pkt)
|
||||
goto end;
|
||||
|
||||
/* When building a packet from another one, the field which may increase the
|
||||
* packet size is the packet number. And the maximum increase is 4 bytes.
|
||||
*/
|
||||
if (!quic_peer_validated_addr(qc) && qc_is_listener(qc) &&
|
||||
pkt->len + 4 > 3 * qc->rx.bytes - qc->tx.prep_bytes) {
|
||||
TRACE_PROTO("anti-amplification limit would be reached", QUIC_EV_CONN_PRSAFRM, qc);
|
||||
goto end;
|
||||
}
|
||||
|
||||
qel->pktns->tx.pto_probe += 1;
|
||||
requeue:
|
||||
list_for_each_entry_safe(frm, frmbak, &pkt->frms, list) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user