From 301844dd56bd356fd5ab490b3509e9ca40028f64 Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Thu, 4 Apr 2019 18:01:28 +0200 Subject: [PATCH] Disconnect on protocol timeout (#2212) --- substrate/core/network-libp2p/src/custom_proto/handler.rs | 2 +- substrate/core/peerset/src/lib.rs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/substrate/core/network-libp2p/src/custom_proto/handler.rs b/substrate/core/network-libp2p/src/custom_proto/handler.rs index 516130602e..c0adb6e62e 100644 --- a/substrate/core/network-libp2p/src/custom_proto/handler.rs +++ b/substrate/core/network-libp2p/src/custom_proto/handler.rs @@ -506,7 +506,7 @@ where Ok(Async::Ready(())) => { deadline.reset(Instant::now() + Duration::from_secs(60)); let event = CustomProtoHandlerOut::ProtocolError { - is_severe: false, + is_severe: true, error: "Timeout when opening protocol".to_string().into(), }; return_value = Some(ProtocolsHandlerEvent::Custom(event)); diff --git a/substrate/core/peerset/src/lib.rs b/substrate/core/peerset/src/lib.rs index b64cafc3e5..f49cbd6f12 100644 --- a/substrate/core/peerset/src/lib.rs +++ b/substrate/core/peerset/src/lib.rs @@ -22,6 +22,7 @@ use futures::{prelude::*, sync::mpsc}; use libp2p::PeerId; use parking_lot::Mutex; use std::sync::Arc; +use log::trace; pub use serde_json::Value; @@ -238,6 +239,7 @@ impl PeersetMut { /// peerset is already connected to, in which case it must not answer. pub fn incoming(&self, peer_id: PeerId, index: IncomingIndex) { let mut inner = self.parent.inner.lock(); + trace!("Incoming {}\nin_slots={:?}\nout_slots={:?}", peer_id, inner.in_slots, inner.out_slots); if inner.out_slots.iter().chain(inner.in_slots.iter()).any(|s| s.as_ref() == Some(&peer_id)) { return } @@ -260,6 +262,7 @@ impl PeersetMut { pub fn dropped(&self, peer_id: &PeerId) { let mut inner = self.parent.inner.lock(); let inner = &mut *inner; // Fixes a borrowing issue. + trace!("Dropping {}\nin_slots={:?}\nout_slots={:?}", peer_id, inner.in_slots, inner.out_slots); // Automatically connect back if reserved. if inner.reserved.contains(peer_id) {