Make peer connect attempts asynchronous (#879)

This commit is contained in:
Yeastplume 2018-03-27 17:11:09 +01:00 committed by Ignotus Peverell
parent 4fcf5fdbca
commit e8e013195f

View file

@ -206,19 +206,25 @@ fn listen_for_addrs(
let pc = peers.peer_count(); let pc = peers.peer_count();
for addr in rx.try_iter() { for addr in rx.try_iter() {
if pc < PEER_MAX_COUNT { if pc < PEER_MAX_COUNT {
let connect_peer = p2p.connect(&addr); let peers_c = peers.clone();
match connect_peer { let p2p_c = p2p.clone();
Ok(p) => { let _ = thread::Builder::new()
trace!(LOGGER, "connect_and_req: ok. attempting send_peer_request"); .name("peer_connect".to_string())
if let Ok(p) = p.try_read() { .spawn(move || {
let _ = p.send_peer_request(capab); let connect_peer = p2p_c.connect(&addr);
match connect_peer {
Ok(p) => {
trace!(LOGGER, "connect_and_req: ok. attempting send_peer_request");
if let Ok(p) = p.try_read() {
let _ = p.send_peer_request(capab);
}
}
Err(e) => {
debug!(LOGGER, "connect_and_req: {} is Defunct; {:?}", addr, e);
let _ = peers_c.update_state(addr, p2p::State::Defunct);
}
} }
} });
Err(e) => {
debug!(LOGGER, "connect_and_req: {} is Defunct; {:?}", addr, e);
let _ = peers.update_state(addr, p2p::State::Defunct);
}
}
} }
} }
} }