Skip to content

Commit 38b02bb

Browse files
authored
Handle already discarded packets in discard_excess_packets (solana-labs#22594)
1 parent 9977396 commit 38b02bb

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

core/src/sigverify_stage.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ impl SigVerifyStage {
195195
.iter_mut()
196196
.rev()
197197
.flat_map(|batch| batch.packets.iter_mut().rev())
198+
.filter(|packet| !packet.meta.discard())
198199
.map(|packet| (packet.meta.addr, packet))
199200
.into_group_map();
200201
// Allocate max_packets evenly across addresses.
@@ -372,11 +373,14 @@ mod tests {
372373
let mut batch = PacketBatch::default();
373374
batch.packets.resize(10, Packet::default());
374375
batch.packets[3].meta.addr = std::net::IpAddr::from([1u16; 8]);
376+
batch.packets[3].meta.set_discard(true);
377+
batch.packets[4].meta.addr = std::net::IpAddr::from([2u16; 8]);
375378
let mut batches = vec![batch];
376379
let max = 3;
377380
SigVerifyStage::discard_excess_packets(&mut batches, max);
378381
assert_eq!(count_non_discard(&batches), max);
379382
assert!(!batches[0].packets[0].meta.discard());
380-
assert!(!batches[0].packets[3].meta.discard());
383+
assert!(batches[0].packets[3].meta.discard());
384+
assert!(!batches[0].packets[4].meta.discard());
381385
}
382386
}

0 commit comments

Comments
 (0)