From 2d32d9ae417fb0e967925fc6db0b8d9330a2fa7a Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Tue, 7 Apr 2026 23:50:35 +0200 Subject: [PATCH] fix: deliver relayed DM messages to federated users on receiving instance The relay broadcast loop skipped members whose homeInstance matched the source instance, assuming they already received the message on their home server. This broke delivery for federated users (e.g. youruser@nova on orbit) who are actively connected to the remote instance. Client-side dedup in addRealtimeMessage already handles double delivery via sourceMessageId cross-matching, making the server-side skip both unnecessary and harmful. --- packages/server/src/routes/federation.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packages/server/src/routes/federation.ts b/packages/server/src/routes/federation.ts index cbd14a2a..20fde9fd 100644 --- a/packages/server/src/routes/federation.ts +++ b/packages/server/src/routes/federation.ts @@ -1940,15 +1940,6 @@ function processCreateEvent( .all(); for (const member of dmMembers) { - const memberUser = db.select() - .from(schema.users) - .where(eq(schema.users.id, member.userId)) - .get(); - - // Skip members whose home instance is the source — they already have this message - const memberHome = memberUser?.homeInstance?.startsWith('http') ? memberUser.homeInstance : `https://${memberUser?.homeInstance}`; - if (memberHome === sourceInstance) continue; - // If the member closed this DM, reopen it and send dm_channel_created // so the sidebar resurfaces before the message arrives. if (member.closed === 1) {