From 6f35a1b82b8d6ea3da727ef011a3fff5617fa837 Mon Sep 17 00:00:00 2001 From: Kolby Moroz Liebl <31669092+KolbyML@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:03:49 -0700 Subject: [PATCH] Revert "Prevent storing non-contactable ENRs (#246)" This reverts commit 10cf22872b268e9f69572b0ddf457a510432a8fb. --- src/service.rs | 38 +++++++------------------------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/src/service.rs b/src/service.rs index ba0f80f4..af968fdb 100644 --- a/src/service.rs +++ b/src/service.rs @@ -886,13 +886,7 @@ impl Service { }; self.send_rpc_request(active_request); } - // Only update the routing table if the new ENR is contactable - if self.ip_mode.get_contactable_addr(&enr).is_some() { - self.connection_updated( - node_id, - ConnectionStatus::PongReceived(enr), - ); - } + self.connection_updated(node_id, ConnectionStatus::PongReceived(enr)); } } } @@ -1194,19 +1188,16 @@ impl Service { return false; } + // If any of the discovered nodes are in the routing table, and there contains an older ENR, update it. // If there is an event stream send the Discovered event if self.config.report_discovered_peers { self.send_event(Event::Discovered(enr.clone())); } - // Check that peers are compatible to be included into the routing table. They must: - // - Pass the table filter - // - Be contactable - // - // Failing this, they are not added, and if there is an older version of them in our - // table, we remove them. - let key = kbucket::Key::from(enr.node_id()); - if (self.config.table_filter)(enr) && self.ip_mode.get_contactable_addr(enr).is_some() { + // ignore peers that don't pass the table filter + if (self.config.table_filter)(enr) { + let key = kbucket::Key::from(enr.node_id()); + // If the ENR exists in the routing table and the discovered ENR has a greater // sequence number, perform some filter checks before updating the enr. @@ -1230,22 +1221,7 @@ impl Service { } } } else { - // Is either non-contactable or didn't pass the table filter. If it exists in the - // routing table, remove it. - match self.kbuckets.write().entry(&key) { - kbucket::Entry::Present(entry, _) if entry.value().seq() < enr.seq() => { - entry.remove() - } - kbucket::Entry::Pending(mut entry, _) => { - if entry.value().seq() < enr.seq() { - entry.remove() - } - } - _ => {} - } - - // Didn't pass the requirements remove the ENR - return false; + return false; // Didn't pass the table filter remove the peer } // The remaining ENRs are used if this request was part of a query. If we are