From 9c01d90c709cc2208dbbfedb12705bbaee320c91 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 22 Jan 2022 01:10:31 +0000 Subject: [PATCH] Handle already discarded packets in discard_excess_packets (#22594) (#22634) (cherry picked from commit 38b02bbcc0381d898a864b99a3a48af04bad20e9) Co-authored-by: sakridge --- core/src/sigverify_stage.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/sigverify_stage.rs b/core/src/sigverify_stage.rs index d45adefb87..81dbff103a 100644 --- a/core/src/sigverify_stage.rs +++ b/core/src/sigverify_stage.rs @@ -194,6 +194,7 @@ impl SigVerifyStage { .iter_mut() .rev() .flat_map(|batch| batch.packets.iter_mut().rev()) + .filter(|packet| !packet.meta.discard) .map(|packet| (packet.meta.addr, packet)) .into_group_map(); // Allocate max_packets evenly across addresses. @@ -370,11 +371,14 @@ mod tests { let mut batch = PacketBatch::default(); batch.packets.resize(10, Packet::default()); batch.packets[3].meta.addr = [1u16; 8]; + batch.packets[3].meta.discard = true; + batch.packets[4].meta.addr = [2u16; 8]; let mut batches = vec![batch]; let max = 3; SigVerifyStage::discard_excess_packets(&mut batches, max); assert_eq!(count_non_discard(&batches), max); assert!(!batches[0].packets[0].meta.discard); - assert!(!batches[0].packets[3].meta.discard); + assert!(batches[0].packets[3].meta.discard); + assert!(!batches[0].packets[4].meta.discard); } }