diff --git a/util/src/network/discovery.rs b/util/src/network/discovery.rs index f383b74f7..950c66dae 100644 --- a/util/src/network/discovery.rs +++ b/util/src/network/discovery.rs @@ -149,6 +149,13 @@ impl Discovery { } } + fn clear_ping(&mut self, id: &NodeId) { + let mut bucket = self.node_buckets.get_mut(Discovery::distance(&self.id, &id) as usize).unwrap(); + if let Some(node) = bucket.nodes.iter_mut().find(|n| &n.address.id == id) { + node.timeout = None; + } + } + fn start(&mut self) { trace!(target: "discovery", "Starting discovery"); self.discovery_round = 0; @@ -388,10 +395,10 @@ impl Discovery { debug!(target: "discovery", "Bad address: {:?}", entry); entry.endpoint.address = from.clone(); } - self.update_node(entry.clone()); + self.clear_ping(node); let mut added_map = HashMap::new(); added_map.insert(node.clone(), entry); - Ok(Some(TableUpdates { added: added_map, removed: HashSet::new() })) + Ok(None) } fn on_find_node(&mut self, rlp: &UntrustedRlp, _node: &NodeId, from: &SocketAddr) -> Result, NetworkError> { diff --git a/util/src/network/host.rs b/util/src/network/host.rs index fc4e07306..e470d47d8 100644 --- a/util/src/network/host.rs +++ b/util/src/network/host.rs @@ -374,12 +374,12 @@ impl Host where Message: Send + Sync + Clone { host.info.write().unwrap().deref_mut().listen_port = port; let boot_nodes = host.info.read().unwrap().config.boot_nodes.clone(); - for n in boot_nodes { - host.add_node(&n); - } if let Some(ref mut discovery) = host.discovery { discovery.lock().unwrap().init_node_list(host.nodes.read().unwrap().unordered_entries()); } + for n in boot_nodes { + host.add_node(&n); + } host }