+ return future::err(());
+ },
+ Some(NetworkMessage::Inv(invs)) => {
+ for inv in invs {
+ match inv {
+ Inventory::Transaction(_) | Inventory::WitnessTransaction(_) => {
+ state_lock.fail_reason = AddressState::EvilNode;
+ state_lock.msg = ("due to unrequested inv tx".to_string(), true);
+ return future::err(());
+ }
+ _ => {},
+ }
+ }
+ },
+ Some(NetworkMessage::Tx(_)) => {
+ state_lock.fail_reason = AddressState::EvilNode;
+ state_lock.msg = ("due to unrequested transaction".to_string(), true);
+ return future::err(());
+ },
+ Some(NetworkMessage::Unknown { command, .. }) => {
+ if command.as_ref() == "gnop" {
+ let mut state_lock = err_peer_state.lock().unwrap();
+ state_lock.msg = (format!("(bad msg type {})", command), true);
+ state_lock.fail_reason = AddressState::EvilNode;
+ return future::err(());
+ }