diff --git a/src/client/LocalServer.ts b/src/client/LocalServer.ts index e8ec51d25..3a9ab7a03 100644 --- a/src/client/LocalServer.ts +++ b/src/client/LocalServer.ts @@ -92,7 +92,14 @@ export class LocalServer { } onMessage(message: string) { - const result = ClientMessageSchema.safeParse(JSON.parse(message)); + let parsed; + try { + parsed = JSON.parse(message); + } catch (e) { + console.error("Failed to parse client message:", e); + return; + } + const result = ClientMessageSchema.safeParse(parsed); if (!result.success) { const error = z.prettifyError(result.error); console.error("Error parsing client message", error); diff --git a/src/client/Transport.ts b/src/client/Transport.ts index 314a63423..f41c15fa8 100644 --- a/src/client/Transport.ts +++ b/src/client/Transport.ts @@ -310,7 +310,14 @@ export class Transport { onconnect(); }; this.socket.onmessage = (event: MessageEvent) => { - const result = ServerMessageSchema.safeParse(JSON.parse(event.data)); + let parsed; + try { + parsed = JSON.parse(event.data); + } catch (e) { + console.error("Failed to parse server message:", e, event.data); + return; + } + const result = ServerMessageSchema.safeParse(parsed); if (!result.success) { const error = z.prettifyError(result.error); console.error("Error parsing server message", error);