X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain.rs;h=2c19c23a4b3f188a3d48374a7432ec3113a019ca;hb=8b18f78f572b03bc0b69c9648f758066e0b0bc03;hp=8b49782a29b3cf220af245010611a1a3b2419be4;hpb=fa44fd6c5494d91c3aea82ac33e4af7c08bd87bc;p=dnsseed-rust diff --git a/src/main.rs b/src/main.rs index 8b49782..2c19c23 100644 --- a/src/main.rs +++ b/src/main.rs @@ -156,6 +156,7 @@ pub fn scan_node(scan_time: Instant, node: SocketAddr, manual: bool) { return future::err(()); } check_set_flag!(recvd_block, "block"); + return future::err(()); }, _ => {}, } @@ -168,7 +169,7 @@ pub fn scan_node(scan_time: Instant, node: SocketAddr, manual: bool) { let store = unsafe { DATA_STORE.as_ref().unwrap() }; printer.set_stat(Stat::ConnectionClosed); - let state_lock = final_peer_state.lock().unwrap(); + let mut state_lock = final_peer_state.lock().unwrap(); if state_lock.recvd_version && state_lock.recvd_verack && state_lock.recvd_addrs && state_lock.recvd_block { let old_state = store.set_node_state(node, AddressState::Good, state_lock.node_services); @@ -177,10 +178,17 @@ pub fn scan_node(scan_time: Instant, node: SocketAddr, manual: bool) { } } else { assert!(state_lock.fail_reason != AddressState::Good); + if state_lock.fail_reason == AddressState::TimeoutDuringRequest && state_lock.recvd_version && state_lock.recvd_verack { + if !state_lock.recvd_addrs { + state_lock.fail_reason = AddressState::TimeoutAwaitingAddr; + } else if !state_lock.recvd_block { + state_lock.fail_reason = AddressState::TimeoutAwaitingBlock; + } + } let old_state = store.set_node_state(node, state_lock.fail_reason, 0); if (manual || old_state != state_lock.fail_reason) && state_lock.fail_reason == AddressState::TimeoutDuringRequest { - printer.add_line(format!("Updating {} from {} to Timeout During Request (ver: {}, vack: {}, addr: {}, block: {})", - node, old_state.to_str(), state_lock.recvd_version, state_lock.recvd_verack, state_lock.recvd_addrs, state_lock.recvd_block), true); + printer.add_line(format!("Updating {} from {} to Timeout During Request (ver: {}, vack: {})", + node, old_state.to_str(), state_lock.recvd_version, state_lock.recvd_verack), true); } else if manual || (old_state != state_lock.fail_reason && state_lock.msg.0 != "" && state_lock.msg.1) { printer.add_line(format!("Updating {} from {} to {} {}", node, old_state.to_str(), state_lock.fail_reason.to_str(), &state_lock.msg.0), state_lock.msg.1); }