From faeb40c5d1dbcb6548c9825b14fa3b72f6497d86 Mon Sep 17 00:00:00 2001 From: bitflash-maintainer Date: Sat, 8 Aug 2026 04:37:52 +0000 Subject: nostr: make /rvrelay a true pin -- never merge discovered relays A pool started with /rvrelay=ONE still spawned an accept thread for every Nostr-discovered relay (BtfAllRelays always merged g_discoveredRelays), and each thread optimistically overwrote the advertised meeting node before registering -- so a discovered Tailscale-only relay (a mesh host) flapped the published .btf descriptor and public miners could not connect. fBtfRelayPinned (set only when /rvrelay parses) makes BtfAllRelays return exactly the pinned list. Also validate the /rvrelay value at parse time: with the pin in place no discovered relay can mask a typo. (cherry picked from commit 0a4d2b02fa5382c5e788b5f0e2f8a844695dec47) --- src/nostr.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/nostr.h') diff --git a/src/nostr.h b/src/nostr.h index b5eb5e3..827b2f3 100644 --- a/src/nostr.h +++ b/src/nostr.h @@ -43,6 +43,14 @@ void BtfSetActiveRelay(const std::string& relay); // If set (via /announcerelay=host:port), this node announces that relay on // Nostr so other nodes discover it automatically -- no manual seed-list edit. extern std::string strBtfAnnounceRelay; +// True when /rvrelay pinned the meeting relay list: BtfAllRelays then returns +// ONLY vBtfMeetingRelays, never Nostr-discovered volunteer relays. Without +// this, a pool that pins one public relay still spawns an accept thread per +// discovered relay, and each thread's optimistic BtfSetActiveRelay makes the +// published descriptor flap to relays the pool may not be reachable at. +extern bool fBtfRelayPinned; +// Basic sanity check on a "host:port" relay address (numeric port 1..65535). +bool LooksLikeRelay(const std::string& r); // Every relay to try: curated seeds + relays discovered from Nostr announcements. std::vector BtfAllRelays(); -- cgit v1.2.3