From ef2dc2fb92b4d67a2f03a040112c09e5dc47d48d Mon Sep 17 00:00:00 2001 From: shanejonas Date: Thu, 8 Apr 2021 14:40:57 -0700 Subject: [PATCH] fix: remove ev origin guard for postmessage + ignore non JSON-RPC messages --- src/transports/PostMessageIframeTransport.ts | 3 --- src/transports/PostMessageWindowTransport.ts | 3 --- src/transports/TransportRequestManager.test.ts | 12 ++---------- src/transports/TransportRequestManager.ts | 2 +- 4 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/transports/PostMessageIframeTransport.ts b/src/transports/PostMessageIframeTransport.ts index 47b4f55..15c6f9c 100644 --- a/src/transports/PostMessageIframeTransport.ts +++ b/src/transports/PostMessageIframeTransport.ts @@ -28,9 +28,6 @@ class PostMessageIframeTransport extends Transport { }); } private messageHandler = (ev: MessageEvent) => { - if (ev.origin === window.origin) { - return; - } this.transportRequestManager.resolveResponse(JSON.stringify(ev.data)); } public connect(): Promise { diff --git a/src/transports/PostMessageWindowTransport.ts b/src/transports/PostMessageWindowTransport.ts index 00f1905..de3c5d9 100644 --- a/src/transports/PostMessageWindowTransport.ts +++ b/src/transports/PostMessageWindowTransport.ts @@ -36,9 +36,6 @@ class PostMessageTransport extends Transport { } private messageHandler = (ev: MessageEvent) => { - if (ev.origin === window.origin) { - return; - } this.transportRequestManager.resolveResponse(JSON.stringify(ev.data)); } diff --git a/src/transports/TransportRequestManager.test.ts b/src/transports/TransportRequestManager.test.ts index 4f06d07..120e86e 100644 --- a/src/transports/TransportRequestManager.test.ts +++ b/src/transports/TransportRequestManager.test.ts @@ -78,17 +78,9 @@ describe("Transport Request Manager", () => { transportReqMan.settlePendingRequest([request], new Error("rejecting")); }); - it("should emit error on bad format for resolving a response", (done) => { - transportReqMan.transportEventChannel.on("error", (err) => { - expect(err.message).toContain("Bad response format"); - done(); - }); + it("should not error on bad format for resolving a response", (done) => { transportReqMan.resolveResponse("{}"); - }); - - it("should not emit error on bad format for resolving a response", () => { - const err = transportReqMan.resolveResponse("{}", false) as Error; - expect(err.message).toContain("Bad response format"); + done(); }); it("should emit response on response && resolve response", (done) => { diff --git a/src/transports/TransportRequestManager.ts b/src/transports/TransportRequestManager.ts index ff9d6b7..dd98b8c 100644 --- a/src/transports/TransportRequestManager.ts +++ b/src/transports/TransportRequestManager.ts @@ -52,7 +52,7 @@ export class TransportRequestManager { try { data = JSON.parse(payload); if (this.checkJSONRPC(data) === false) { - throw new Error("Bad response format"); + return; // ignore messages that are not conforming to JSON-RPC } if (data instanceof Array) { return this.resolveBatch(data, emitError);