Handle already discarded packets in discard_excess_packets (#22594)
This commit is contained in:
parent
9977396d8f
commit
38b02bbcc0
|
@ -195,6 +195,7 @@ impl SigVerifyStage {
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
.rev()
|
.rev()
|
||||||
.flat_map(|batch| batch.packets.iter_mut().rev())
|
.flat_map(|batch| batch.packets.iter_mut().rev())
|
||||||
|
.filter(|packet| !packet.meta.discard())
|
||||||
.map(|packet| (packet.meta.addr, packet))
|
.map(|packet| (packet.meta.addr, packet))
|
||||||
.into_group_map();
|
.into_group_map();
|
||||||
// Allocate max_packets evenly across addresses.
|
// Allocate max_packets evenly across addresses.
|
||||||
|
@ -372,11 +373,14 @@ mod tests {
|
||||||
let mut batch = PacketBatch::default();
|
let mut batch = PacketBatch::default();
|
||||||
batch.packets.resize(10, Packet::default());
|
batch.packets.resize(10, Packet::default());
|
||||||
batch.packets[3].meta.addr = std::net::IpAddr::from([1u16; 8]);
|
batch.packets[3].meta.addr = std::net::IpAddr::from([1u16; 8]);
|
||||||
|
batch.packets[3].meta.set_discard(true);
|
||||||
|
batch.packets[4].meta.addr = std::net::IpAddr::from([2u16; 8]);
|
||||||
let mut batches = vec![batch];
|
let mut batches = vec![batch];
|
||||||
let max = 3;
|
let max = 3;
|
||||||
SigVerifyStage::discard_excess_packets(&mut batches, max);
|
SigVerifyStage::discard_excess_packets(&mut batches, max);
|
||||||
assert_eq!(count_non_discard(&batches), max);
|
assert_eq!(count_non_discard(&batches), max);
|
||||||
assert!(!batches[0].packets[0].meta.discard());
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue