Disconnect on protocol timeout (#2212)

This commit is contained in:
Arkadiy Paronyan
2019-04-04 18:01:28 +02:00
committed by GitHub
parent cb3c912b1a
commit 301844dd56
2 changed files with 4 additions and 1 deletions
@@ -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));
+3
View File
@@ -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) {