From 68b80c3f8288696a59a32dfba78595e157911a39 Mon Sep 17 00:00:00 2001 From: reverse Date: Sun, 16 Aug 2026 19:26:10 +0000 Subject: [PATCH] s2s: announce remote members arriving via FJOIN to local channel members --- src/link.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/link.rs b/src/link.rs index 4ac28ec..079c7d7 100644 --- a/src/link.rs +++ b/src/link.rs @@ -2132,9 +2132,20 @@ impl Server { } adds.push((uuid, m)); } - if let Some(ch) = self.channels.get_mut(&key) { - for (uuid, m) in adds { - ch.rmembers.insert(uuid, m); + for (uuid, m) in adds { + let already = self + .channels + .get(&key) + .map(|c| c.rmembers.contains_key(&uuid)) + .unwrap_or(false); + if let Some(ch) = self.channels.get_mut(&key) { + ch.rmembers.insert(uuid.clone(), m); + } + // announce the join to local members (a no-op for a brand-new channel) + if !already { + if let Some(prefix) = self.remote_users.get(&uuid).map(|r| r.prefix()) { + self.to_channel(&key, &format!(":{prefix} JOIN {chan}"), None); + } } } let raw = format!(