X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=dnsseed-rust;a=blobdiff_plain;f=src%2Fmain.rs;h=2c19c23a4b3f188a3d48374a7432ec3113a019ca;hp=ae0bb5b833ce37510b099072bd97068ac7bac532;hb=8b18f78f572b03bc0b69c9648f758066e0b0bc03;hpb=894cf32d90308efbf7af5339677d822d27633bc3 diff --git a/src/main.rs b/src/main.rs index ae0bb5b..2c19c23 100644 --- a/src/main.rs +++ b/src/main.rs @@ -169,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); @@ -178,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); }