From ea29d2a3ebc7aa0e50dfeaa64e7440318c965410 Mon Sep 17 00:00:00 2001 From: Youngjoon Lee <5462944+youngjoon-lee@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:38:19 +0900 Subject: [PATCH] fix: bug in NoisyCoinFlippingQueue --- mixnet-rs/protocol/src/queue.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/mixnet-rs/protocol/src/queue.rs b/mixnet-rs/protocol/src/queue.rs index c8c0044..c288d01 100644 --- a/mixnet-rs/protocol/src/queue.rs +++ b/mixnet-rs/protocol/src/queue.rs @@ -302,12 +302,14 @@ impl Queue for PermutedCoinFlippingQueue { struct NoisyCoinFlippingQueue { queue: MixQueue, + idx: usize, } impl NoisyCoinFlippingQueue { pub fn new(seed: u64) -> Self { Self { queue: MixQueue::new(0, seed), + idx: 0, } } } @@ -323,12 +325,16 @@ impl Queue for NoisyCoinFlippingQueue { } loop { - for i in 0..self.queue.len() { - if self.queue.flip_coin() { - return self.queue.pop(i).unwrap(); - } else if i == 0 { - return Message::Noise; - } + if self.idx >= self.queue.len() { + self.idx = 0; + } + + if self.queue.flip_coin() { + return self.queue.pop(self.idx).unwrap(); + } else if self.idx == 0 { + return Message::Noise; + } else { + self.idx += 1; } } }