From 0991826648e85c9fd8447a2bd370b2425ce9159c Mon Sep 17 00:00:00 2001 From: who-biz <37732338+who-biz@users.noreply.github.com> Date: Mon, 18 Sep 2023 15:32:00 -0400 Subject: [PATCH] Don't use peers.iter().next() in bodysync - We don't actually need to mutate this value at all. We can just take the peer by index - This also removes cycle behavior in bodysync as it pertains to peerlist polling - Result is that we request 1 block from 1 peer, at a given time --- servers/src/epic/sync/body_sync.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/servers/src/epic/sync/body_sync.rs b/servers/src/epic/sync/body_sync.rs index 6c436bba..423d93f3 100644 --- a/servers/src/epic/sync/body_sync.rs +++ b/servers/src/epic/sync/body_sync.rs @@ -135,15 +135,17 @@ impl BodySync { self.blocks_requested = 0; self.receive_timeout = Utc::now() + Duration::seconds(6); - let mut peers_iter = peers.iter().cycle(); + let mut peer_idx = 0; for hash in hashes_to_get.clone() { - if let Some(peer) = peers_iter.next() { - if let Err(e) = peer.send_block_request(*hash, chain::Options::SYNC) { - debug!("Skipped request to {}: {:?}", peer.info.addr, e); - peer.stop(); - } else { - self.blocks_requested += 1; - } + if let Err(e) = peers[peer_idx].send_block_request(*hash, chain::Options::SYNC) { + debug!("Skipped request to {}: {:?}", peers[peer_idx].info.addr, e); + peers[peer_idx].stop(); + } else { + self.blocks_requested += 1; + } + peer_idx += 1; + if peer_idx == peers.len() { + break; } } }