From 4013d0c9392a0249745c0f330ffc4cc29735ca84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Fri, 29 Jan 2021 10:18:24 +0000 Subject: [PATCH] Checking if the delay has already expired before attempting to put it in delay queue (#508) --- mixnode/src/node/packet_delayforwarder.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mixnode/src/node/packet_delayforwarder.rs b/mixnode/src/node/packet_delayforwarder.rs index 870e8f2f48..89f7f5939c 100644 --- a/mixnode/src/node/packet_delayforwarder.rs +++ b/mixnode/src/node/packet_delayforwarder.rs @@ -96,7 +96,13 @@ impl DelayForwarder { // in case of a zero delay packet, don't bother putting it in the delay queue, // just forward it immediately if let Some(instant) = new_packet.1 { - self.delay_queue.insert_at(new_packet.0, instant); + // check if the delay has already expired, if so, don't bother putting it through + // the delay queue only to retrieve it immediately. Just forward it. + if instant.checked_duration_since(Instant::now()).is_none() { + self.forward_packet(new_packet.0) + } else { + self.delay_queue.insert_at(new_packet.0, instant); + } } else { self.forward_packet(new_packet.0) }