Add SSEServerTransport.handleMessage bypass

This commit is contained in:
Justin Spahr-Summers 2024-09-27 11:14:59 +01:00
commit 81b40e5608
No known key found for this signature in database
GPG key ID: E78498BF3C053CA7

View file

@ -88,20 +88,30 @@ export class SSEServerTransport implements Transport {
return;
}
let message: JSONRPCMessage;
try {
message = JSON.parse(body);
validateMessage(message);
await this.handleMessage(JSON.parse(body));
} catch (error) {
this.onerror?.(error as Error);
res.writeHead(400).end(`Invalid message: ${body}`);
return;
}
this.onmessage?.(message);
res.writeHead(202).end("Accepted");
}
/**
* Handle a client message, regardless of how it arrived. This can be used to inform the server of messages that arrive via a means different than HTTP POST.
*/
async handleMessage(message: JSONRPCMessage): Promise<void> {
try {
validateMessage(message);
} catch (error) {
this.onerror?.(error as Error);
return;
}
this.onmessage?.(message);
}
async close(): Promise<void> {
this._sseResponse?.end();
this._sseResponse = undefined;