Fixed adding boot nodes to discovery table; Ping optimization
This commit is contained in:
parent
a179722542
commit
e4baf37bf8
@ -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) {
|
fn start(&mut self) {
|
||||||
trace!(target: "discovery", "Starting discovery");
|
trace!(target: "discovery", "Starting discovery");
|
||||||
self.discovery_round = 0;
|
self.discovery_round = 0;
|
||||||
@ -388,10 +395,10 @@ impl Discovery {
|
|||||||
debug!(target: "discovery", "Bad address: {:?}", entry);
|
debug!(target: "discovery", "Bad address: {:?}", entry);
|
||||||
entry.endpoint.address = from.clone();
|
entry.endpoint.address = from.clone();
|
||||||
}
|
}
|
||||||
self.update_node(entry.clone());
|
self.clear_ping(node);
|
||||||
let mut added_map = HashMap::new();
|
let mut added_map = HashMap::new();
|
||||||
added_map.insert(node.clone(), entry);
|
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<Option<TableUpdates>, NetworkError> {
|
fn on_find_node(&mut self, rlp: &UntrustedRlp, _node: &NodeId, from: &SocketAddr) -> Result<Option<TableUpdates>, NetworkError> {
|
||||||
|
@ -374,12 +374,12 @@ impl<Message> Host<Message> where Message: Send + Sync + Clone {
|
|||||||
host.info.write().unwrap().deref_mut().listen_port = port;
|
host.info.write().unwrap().deref_mut().listen_port = port;
|
||||||
|
|
||||||
let boot_nodes = host.info.read().unwrap().config.boot_nodes.clone();
|
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 {
|
if let Some(ref mut discovery) = host.discovery {
|
||||||
discovery.lock().unwrap().init_node_list(host.nodes.read().unwrap().unordered_entries());
|
discovery.lock().unwrap().init_node_list(host.nodes.read().unwrap().unordered_entries());
|
||||||
}
|
}
|
||||||
|
for n in boot_nodes {
|
||||||
|
host.add_node(&n);
|
||||||
|
}
|
||||||
host
|
host
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user