From 972cea5fe9c16d2d65276e4722fbc97e5042c654 Mon Sep 17 00:00:00 2001 From: Yoni Date: Mon, 31 Dec 2018 22:48:24 +0200 Subject: [PATCH] more idiomatic way of picking the peer --- p2p/src/peers.rs | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/p2p/src/peers.rs b/p2p/src/peers.rs index 8e0817d4..271fa566 100644 --- a/p2p/src/peers.rs +++ b/p2p/src/peers.rs @@ -83,23 +83,17 @@ impl Peers { // Update the dandelion relay pub fn update_dandelion_relay(&self) { let peers = self.outgoing_connected_peers(); - match &self.config.dandelion_peer { - Some(ip) => { - for peer in &peers { - if peer.info.addr == *ip { - debug!("Found predefined dandelion peer, setting as relay"); - self.set_dandelion_relay(peer); - return; - } - } - debug!("Could not find predefined dandelion peer among connected peers, choosing random") - } - None => {} - } - match thread_rng().choose(&peers) { + + let peer = &self + .config + .dandelion_peer + .and_then(|ip| peers.iter().find(|x| x.info.addr == ip)) + .or(thread_rng().choose(&peers)); + + match peer { Some(peer) => self.set_dandelion_relay(peer), None => debug!("Could not update dandelion relay"), - }; + } } fn set_dandelion_relay(&self, peer: &Arc) {