diff --git a/mixnet/dissemination/src/iteration.rs b/mixnet/dissemination/src/iteration.rs index 3b0649e..2c26bf7 100644 --- a/mixnet/dissemination/src/iteration.rs +++ b/mixnet/dissemination/src/iteration.rs @@ -136,7 +136,7 @@ fn relay_messages( // Collect messages to relay let mut all_msgs_to_relay: Vec)>> = Vec::new(); for node in nodes.iter_mut() { - all_msgs_to_relay.push(node.read_queues()); + all_msgs_to_relay.push(node.read_queues(None)); } // Relay the messages diff --git a/mixnet/ordering/src/iteration.rs b/mixnet/ordering/src/iteration.rs index fe966d8..56aa273 100644 --- a/mixnet/ordering/src/iteration.rs +++ b/mixnet/ordering/src/iteration.rs @@ -280,7 +280,7 @@ impl AllMessagesToRelay { fn new(mixnodes: &mut [Node]) -> Self { let mut all_msgs_to_relay = Vec::with_capacity(mixnodes.len()); for node in mixnodes.iter_mut() { - all_msgs_to_relay.push((node.id, node.read_queues())); + all_msgs_to_relay.push((node.id, node.read_queues(Some(RECEIVER_NODE_ID)))); } Self(all_msgs_to_relay) } diff --git a/mixnet/protocol/src/node.rs b/mixnet/protocol/src/node.rs index 59488d8..b260f6a 100644 --- a/mixnet/protocol/src/node.rs +++ b/mixnet/protocol/src/node.rs @@ -87,10 +87,25 @@ where first_received } - pub fn read_queues(&mut self) -> MessagesToRelay { + pub fn read_queues(&mut self, noise_receiver: Option) -> MessagesToRelay { let mut msgs_to_relay: MessagesToRelay = Vec::with_capacity(self.queues.len()); self.queues.iter_mut().for_each(|(node_id, queue)| { - msgs_to_relay.push((*node_id, queue.pop())); + let msg = queue.pop(); + match msg { + Message::Data(_) => { + msgs_to_relay.push((*node_id, msg)); + } + Message::Noise => match noise_receiver { + Some(noise_receiver) => { + if *node_id == noise_receiver { + msgs_to_relay.push((*node_id, msg)); + } + } + None => { + msgs_to_relay.push((*node_id, msg)); + } + }, + } }); msgs_to_relay }