From bd192f7076a6613552c9a0b2a6d4cd05dcc0385d Mon Sep 17 00:00:00 2001 From: KingKDot Date: Tue, 19 May 2026 17:29:50 -0500 Subject: [PATCH] fix spamming from purgatory --- .../routes/websocket-lifecycle-routes.ts | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/Overlord-Server/src/server/routes/websocket-lifecycle-routes.ts b/Overlord-Server/src/server/routes/websocket-lifecycle-routes.ts index eb0cfdc..6880ad4 100644 --- a/Overlord-Server/src/server/routes/websocket-lifecycle-routes.ts +++ b/Overlord-Server/src/server/routes/websocket-lifecycle-routes.ts @@ -453,22 +453,25 @@ export async function handleWebSocketMessage( logger.info(`[purgatory] client ${resolvedId} is pending approval`); ws.send(encodeMessage({ type: "enrollment_status", status: "pending" })); deps.notifyDashboard(); - deps.notifyDashboardClientEvent("client_purgatory", { - id: resolvedId, - host: _s((payload as any).host), - user: _s((payload as any).user), - os: _s((payload as any).os), - ip: ip || undefined, - country, - }); - deps.broadcastClientEvent("client_purgatory", { - id: resolvedId, - host: _s((payload as any).host), - user: _s((payload as any).user), - os: _s((payload as any).os), - ip: ip || undefined, - country, - }); + const isNewPurgatoryEntry = !existing || existing.enrollmentStatus !== "pending"; + if (isNewPurgatoryEntry) { + deps.notifyDashboardClientEvent("client_purgatory", { + id: resolvedId, + host: _s((payload as any).host), + user: _s((payload as any).user), + os: _s((payload as any).os), + ip: ip || undefined, + country, + }); + deps.broadcastClientEvent("client_purgatory", { + id: resolvedId, + host: _s((payload as any).host), + user: _s((payload as any).user), + os: _s((payload as any).os), + ip: ip || undefined, + country, + }); + } setTimeout(() => { try { ws.close(4001, "pending"); } catch {} }, 100); return; }