From bc3ff59e9f8790b4a5b99a9b87867c7725a23492 Mon Sep 17 00:00:00 2001 From: xdustinface Date: Sun, 8 Feb 2026 14:44:33 +0100 Subject: [PATCH] fix: clear up failed connection attempts Not clearing them up restricts from repeated connection attempts. --- dash-spv/src/network/manager.rs | 2 ++ dash-spv/src/network/pool.rs | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dash-spv/src/network/manager.rs b/dash-spv/src/network/manager.rs index 1f4232cc6..fe05ce9f3 100644 --- a/dash-spv/src/network/manager.rs +++ b/dash-spv/src/network/manager.rs @@ -295,6 +295,7 @@ impl PeerNetworkManager { } Err(e) => { log::warn!("Handshake failed with {}: {}", addr, e); + pool.remove_peer(&addr).await; // Update reputation for handshake failure reputation_manager .update_reputation( @@ -310,6 +311,7 @@ impl PeerNetworkManager { } Err(e) => { log::debug!("Failed to connect to {}: {}", addr, e); + pool.remove_peer(&addr).await; // Minor reputation penalty for connection failure reputation_manager .update_reputation( diff --git a/dash-spv/src/network/pool.rs b/dash-spv/src/network/pool.rs index db690a3a2..09b3024b6 100644 --- a/dash-spv/src/network/pool.rs +++ b/dash-spv/src/network/pool.rs @@ -61,8 +61,9 @@ impl PeerPool { Ok(()) } - /// Remove a peer from the pool + /// Remove a peer from the pool and clear connecting state pub async fn remove_peer(&self, addr: &SocketAddr) -> Option>> { + self.connecting.write().await.remove(addr); let removed = self.peers.write().await.remove(addr); if removed.is_some() { log::info!("Removed peer {}", addr);