From 1d8ab03f802d15da693fdb090f07595ac9cb20b2 Mon Sep 17 00:00:00 2001 From: draoi Date: Thu, 18 Jul 2024 12:05:39 +0200 Subject: [PATCH] refine_session: actually delete greylist entries that fail the handshake --- src/net/session/refine_session.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/net/session/refine_session.rs b/src/net/session/refine_session.rs index 1a0afae8d..26eb97870 100644 --- a/src/net/session/refine_session.rs +++ b/src/net/session/refine_session.rs @@ -268,7 +268,6 @@ impl GreylistRefinery { match hosts.container.fetch_random_with_schemes(HostColor::Grey, &allowed_transports) { Some((entry, _)) => { let url = &entry.0; - let last_seen = &entry.1; if let Err(e) = hosts.try_register(url.clone(), HostState::Refine) { debug!(target: "net::refinery", "Unable to refine addr={}, err={}", @@ -277,12 +276,15 @@ impl GreylistRefinery { } if !self.session().handshake_node(url.clone(), self.p2p().clone()).await { + hosts.container.remove_if_exists(HostColor::Grey, url); + debug!( target: "net::refinery", "Peer {} handshake failed. Removed from greylist", url, ); - hosts.greylist_host(url, *last_seen).unwrap(); + // Free up this addr for future operations. + hosts.unregister(url); continue }