From 8be30dc95fa08487ce1e200f83e73e4bd50e04b1 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Mon, 20 Apr 2026 16:41:56 +0200 Subject: [PATCH] fix: check 202 before response.ok so queued approval isn't treated as accepted --- packages/server/src/utils/federationPeering.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/server/src/utils/federationPeering.ts b/packages/server/src/utils/federationPeering.ts index 72d46dc4..1fc49761 100644 --- a/packages/server/src/utils/federationPeering.ts +++ b/packages/server/src/utils/federationPeering.ts @@ -139,15 +139,6 @@ async function performHandshake( signal: AbortSignal.timeout(10_000), }); - if (response.ok) { - // Activate the peer - db.update(schema.federationPeers) - .set({ status: 'active', lastSeenAt: Date.now() }) - .where(eq(schema.federationPeers.id, peerId)) - .run(); - return { status: 'active', peerId }; - } - if (response.status === 202) { // Request queued for admin approval on the remote side db.update(schema.federationPeers) @@ -157,6 +148,15 @@ async function performHandshake( return { status: 'pending', error: 'Awaiting admin approval on remote instance' }; } + if (response.ok) { + // 200 = peer accepted and activated + db.update(schema.federationPeers) + .set({ status: 'active', lastSeenAt: Date.now() }) + .where(eq(schema.federationPeers.id, peerId)) + .run(); + return { status: 'active', peerId }; + } + // Check for explicit rejection (autoAcceptPeering = 0) let code: string | undefined; let errorMessage = `Remote rejected peering (HTTP ${response.status})`;