diff --git a/src/net/hosts.rs b/src/net/hosts.rs index b3c45704f..431b84357 100644 --- a/src/net/hosts.rs +++ b/src/net/hosts.rs @@ -228,7 +228,7 @@ impl HostState { match self { HostState::Insert => Err(Error::HostStateBlocked(start, end)), HostState::Refine => Err(Error::HostStateBlocked(start, end)), - HostState::Connect => Err(Error::HostStateBlocked(start, end)), + HostState::Connect => Ok(HostState::Suspend), HostState::Suspend => Err(Error::HostStateBlocked(start, end)), HostState::Connected(_) => Err(Error::HostStateBlocked(start, end)), HostState::Move => Ok(HostState::Suspend), diff --git a/src/net/session/outbound_session.rs b/src/net/session/outbound_session.rs index 46f3b2dcf..8078212e2 100644 --- a/src/net/session/outbound_session.rs +++ b/src/net/session/outbound_session.rs @@ -420,6 +420,16 @@ impl Slot { }); self.channel_id.store(0, Ordering::Relaxed); + + warn!( + target: "net::outbound_session::try_connect()", + "[P2P] Suspending addr= [{}] slot #{}", + addr, slot + ); + + // Mark its state as Suspend, which sends this node to the Refinery for processing. + self.p2p().hosts().try_register(addr.clone(), HostState::Suspend).await.unwrap(); + continue }