From 63a7f0c922057b1a523894e3e62b8527cef88456 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Thu, 9 Apr 2026 13:47:30 +0200 Subject: [PATCH] fix: use proper HTTP status codes on peer/ensure (400 for validation, 429 for rate limit) --- packages/server/src/routes/federation.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/server/src/routes/federation.ts b/packages/server/src/routes/federation.ts index 89dc8b50..e0ed0829 100644 --- a/packages/server/src/routes/federation.ts +++ b/packages/server/src/routes/federation.ts @@ -490,16 +490,22 @@ export async function federationRoutes(app: FastifyInstance): Promise { async (request, reply) => { const { remoteOrigin: rawOrigin } = request.body ?? {}; if (!rawOrigin || typeof rawOrigin !== 'string') { - return reply.code(200).send({ peeringStatus: 'failed', error: 'remoteOrigin is required' }); + return reply.code(400).send({ error: 'remoteOrigin is required', statusCode: 400 }); } const remoteOrigin = validateOrigin(rawOrigin); if (!remoteOrigin) { - return reply.code(200).send({ peeringStatus: 'failed', error: 'remoteOrigin must be a valid HTTPS URL (HTTP is only allowed for localhost)' }); + return reply.code(400).send({ + error: 'remoteOrigin must be a valid HTTPS URL (HTTP is only allowed for localhost)', + statusCode: 400, + }); } if (isEnsureRateLimited(request.userId)) { - return reply.code(200).send({ peeringStatus: 'failed', error: 'Too many peering requests — try again later' }); + return reply.code(429).send({ + error: 'Too many peering requests — try again later', + statusCode: 429, + }); } const { ensurePeered } = await import('../utils/federationPeering.js');