upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/sync/self_subscriber.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-01-13 12:45:55 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-01-13 12:49:30 +0000
commit7dba18eb9ae64d429fef1a1f5437981efefb86b6 (patch)
treef1bb2d7a173e164edb8c402f0121a146fe53bcbf /src/sync/self_subscriber.rs
parentd399bd0bcfba3a3f500421a954257ada034283f8 (diff)
fix: Enable sync relay discovery in archive_all mode
The bug: SelfSubscriber filtered announcements with lists_our_relay() check, preventing archive_all mode from discovering relays in announcements that don't list our relay domain. The insight: SelfSubscriber only receives events that ALREADY passed write policy validation (archive_all, archive_whitelist, blacklist, etc.) via admit_event() before being saved to the database. The event flow: External relay → process_event_static() → write_policy.admit_event() → (validation happens here) → save to DB → notify_event() → SelfSubscriber receives via WebSocket So the lists_our_relay() check was redundant double-validation that broke archive_all mode by filtering events that had already been accepted by the write policy. The fix: Simply remove the lists_our_relay() filtering. Events reaching SelfSubscriber are pre-validated and should all be processed for relay discovery according to the configured archive policy. Changes: - Removed lists_our_relay() check from process_notification() (4 lines) - Removed unused lists_our_relay() helper function (9 lines) - Added comment explaining events are pre-validated (3 lines) - Total: 13 lines removed, 3 lines added Fixes #194d
Diffstat (limited to 'src/sync/self_subscriber.rs')
-rw-r--r--src/sync/self_subscriber.rs18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/sync/self_subscriber.rs b/src/sync/self_subscriber.rs
index 9f6fa70..3cc408d 100644
--- a/src/sync/self_subscriber.rs
+++ b/src/sync/self_subscriber.rs
@@ -148,12 +148,11 @@ impl SelfSubscriber {
148 ) -> LoopControl { 148 ) -> LoopControl {
149 match notification { 149 match notification {
150 Ok(RelayPoolNotification::Event { event, .. }) => { 150 Ok(RelayPoolNotification::Event { event, .. }) => {
151 // Only process 30617 events that list our relay 151 // Process 30617 events for relay discovery
152 // Note: Events reaching here have already passed write policy validation
153 // (archive_all, archive_whitelist, blacklist, etc.) so no additional
154 // filtering is needed.
152 if event.kind == Kind::GitRepoAnnouncement { 155 if event.kind == Kind::GitRepoAnnouncement {
153 if !self.lists_our_relay(&event) {
154 return LoopControl::Continue;
155 }
156
157 // Extract repo ID and relays 156 // Extract repo ID and relays
158 if let Some(repo_id) = Self::extract_repo_id(&event) { 157 if let Some(repo_id) = Self::extract_repo_id(&event) {
159 let relays = Self::extract_relay_urls(&event); 158 let relays = Self::extract_relay_urls(&event);
@@ -251,15 +250,6 @@ impl SelfSubscriber {
251 None 250 None
252 } 251 }
253 252
254 /// Check if announcement lists our relay
255 ///
256 /// Returns true if any extracted relay URL contains our domain
257 fn lists_our_relay(&self, event: &Event) -> bool {
258 Self::extract_relay_urls(event)
259 .iter()
260 .any(|url| url.contains(&self.relay_domain) || url == &self.own_relay_url)
261 }
262
263 /// Main run loop 253 /// Main run loop
264 /// 254 ///
265 /// Connects to own relay, subscribes to relevant event kinds, 255 /// Connects to own relay, subscribes to relevant event kinds,