Skip to content

Commit a807cf7

Browse files
author
Sahar Shemesh
committed
fix: ignore invalid json messages only
1 parent 5b40979 commit a807cf7

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/shared/stdio.test.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { ZodError } from 'zod/v4';
12
import { JSONRPCMessage } from '../types.js';
23
import { ReadBuffer } from './stdio.js';
34

@@ -34,9 +35,16 @@ test('should be reusable after clearing', () => {
3435
expect(readBuffer.readMessage()).toEqual(testMessage);
3536
});
3637

37-
test('should override invalid messages and return null', () => {
38+
test('should override invalid json message and return null', () => {
3839
const readBuffer = new ReadBuffer();
3940

4041
readBuffer.append(Buffer.from('invalid message\n'));
4142
expect(readBuffer.readMessage()).toBeNull();
4243
});
44+
45+
test('should throw validation error on invalid JSON-RPC message', () => {
46+
const readBuffer = new ReadBuffer();
47+
const invalidJsonRpcMessage = '{"jsonrpc":"2.0","method":123}\n';
48+
readBuffer.append(Buffer.from(invalidJsonRpcMessage));
49+
expect(() => readBuffer.readMessage()).toThrowError(ZodError);
50+
});

src/shared/stdio.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { ZodError } from 'zod';
21
import { JSONRPCMessage, JSONRPCMessageSchema } from '../types.js';
32

43
/**
@@ -35,8 +34,8 @@ export function deserializeMessage(line: string): JSONRPCMessage | null {
3534
try {
3635
return JSONRPCMessageSchema.parse(JSON.parse(line));
3736
} catch (error: unknown) {
38-
// When Non JSONRPC message is received (parsing error or schema validation error), return null
39-
if (error instanceof ZodError || error instanceof SyntaxError) {
37+
// When non-JSON messages are received, we simply ignore them.
38+
if (error instanceof SyntaxError) {
4039
return null;
4140
}
4241
throw error;

0 commit comments

Comments
 (0)