From a815640a3bdcdaf22d4753a6f73c53ed6631b3aa Mon Sep 17 00:00:00 2001 From: cloudhead Date: Mon, 29 Apr 2024 12:28:30 +0200 Subject: [PATCH] node: Always try to relay node announcements They are cached and will often be old. They should still be relayed. --- radicle-node/src/service.rs | 11 +++++++---- radicle-node/src/service/message.rs | 4 ++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/radicle-node/src/service.rs b/radicle-node/src/service.rs index 01e39654..b94f2e41 100644 --- a/radicle-node/src/service.rs +++ b/radicle-node/src/service.rs @@ -1338,11 +1338,14 @@ where let now = self.clock; let timestamp = message.timestamp(); // To avoid spamming peers on startup with historical gossip messages, - // don't relay messages that are too old. - let relay = if now - timestamp.to_local_time() > MAX_TIME_DELTA { - false - } else { + // don't relay messages that are too old. We make an exception for node announcements, + // since they are cached, and will hence often carry old timestamps. + let relay = if message.is_node_announcement() + || now - timestamp.to_local_time() <= MAX_TIME_DELTA + { self.config.relay + } else { + false }; // Don't allow messages from too far in the future. diff --git a/radicle-node/src/service/message.rs b/radicle-node/src/service/message.rs index b18208b1..7a3e09d9 100644 --- a/radicle-node/src/service/message.rs +++ b/radicle-node/src/service/message.rs @@ -274,6 +274,10 @@ impl AnnouncementMessage { Self::Node(NodeAnnouncement { timestamp, .. }) => *timestamp, } } + + pub fn is_node_announcement(&self) -> bool { + matches!(self, Self::Node(_)) + } } impl From for AnnouncementMessage {