diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index 81760b6d4..fe05cebc5 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -459,7 +459,17 @@ export function Connection( conn.send('pong'); return; } - h.message?.(JSON.parse(e.data.toString())); + let payload; + try { + payload = JSON.parse(e.data.toString()); + } catch { + conn.close(); + } + try { + h.message?.(payload); + } catch (err) { + logger.error(e); + } }; await bus.parallel('connection/active', h); if (conn.readyState === conn.OPEN) {