From eef193e8bd377b1d9483b814a2999980b5bfb613 Mon Sep 17 00:00:00 2001 From: arkpar Date: Wed, 17 Feb 2016 14:06:19 +0100 Subject: [PATCH] Don't add useless peers to table --- util/src/network/discovery.rs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/util/src/network/discovery.rs b/util/src/network/discovery.rs index 950c66dae..b12e3b2a1 100644 --- a/util/src/network/discovery.rs +++ b/util/src/network/discovery.rs @@ -361,24 +361,21 @@ impl Discovery { debug!(target: "discovery", "Expired ping"); return Err(NetworkError::Expired); } - let mut entry = NodeEntry { id: node.clone(), endpoint: source.clone() }; - if !entry.endpoint.is_valid() { - debug!(target: "discovery", "Got bad address: {:?}, using {:?} instead", entry, from); - entry.endpoint.address = from.clone(); + let mut added_map = HashMap::new(); + let entry = NodeEntry { id: node.clone(), endpoint: source.clone() }; + if !entry.endpoint.is_valid() || !entry.endpoint.is_global() { + debug!(target: "discovery", "Got bad address: {:?}", entry); } - if !entry.endpoint.is_global() { - debug!(target: "discovery", "Got local address: {:?}, using {:?} instead", entry, from); - entry.endpoint.address = from.clone(); + else { + self.update_node(entry.clone()); + added_map.insert(node.clone(), entry); } - self.update_node(entry.clone()); let hash = rlp.as_raw().sha3(); let mut response = RlpStream::new_list(2); dest.to_rlp_list(&mut response); response.append(&hash); - self.send_packet(PACKET_PONG, &entry.endpoint.udp_address(), &response.drain()); + self.send_packet(PACKET_PONG, from, &response.drain()); - let mut added_map = HashMap::new(); - added_map.insert(node.clone(), entry); Ok(Some(TableUpdates { added: added_map, removed: HashSet::new() })) }