Prechádzať zdrojové kódy

outbound_session: suspend a peer that fails the version exchange

draoi 2 rokov pred
rodič
commit
511c26c904
2 zmenil súbory, kde vykonal 11 pridanie a 1 odobranie
  1. 1 1
      src/net/hosts.rs
  2. 10 0
      src/net/session/outbound_session.rs

+ 1 - 1
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),

+ 10 - 0
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
             }