diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-03-09 09:36:17 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-09 09:36:17 +0530 |
commit | e1fb174f86adce421ee6bbce70e5dc1558c10868 (patch) | |
tree | b0af0727dcde3815a1e45a033239486cee6366e4 /ext/websocket/01_websocket.js | |
parent | 0bed4d3e5153aaf2e06fb6579ac6f24acf63567f (diff) |
fix(ext/websocket): do not continue reading if socket rid closes (#21849)
Fixes https://github.com/denoland/deno/issues/21379
Diffstat (limited to 'ext/websocket/01_websocket.js')
-rw-r--r-- | ext/websocket/01_websocket.js | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/ext/websocket/01_websocket.js b/ext/websocket/01_websocket.js index 15793a886..6c9bbc157 100644 --- a/ext/websocket/01_websocket.js +++ b/ext/websocket/01_websocket.js @@ -417,9 +417,14 @@ class WebSocket extends EventTarget { switch (kind) { case 0: { /* string */ + const data = op_ws_get_buffer_as_string(rid); + if (data === undefined) { + break; + } + this[_serverHandleIdleTimeout](); const event = new MessageEvent("message", { - data: op_ws_get_buffer_as_string(rid), + data, origin: this[_url], }); setIsTrusted(event, true); @@ -428,9 +433,14 @@ class WebSocket extends EventTarget { } case 1: { /* binary */ + const d = op_ws_get_buffer(rid); + if (d == undefined) { + break; + } + this[_serverHandleIdleTimeout](); // deno-lint-ignore prefer-primordials - const buffer = op_ws_get_buffer(rid).buffer; + const buffer = d.buffer; let data; if (this.binaryType === "blob") { data = new Blob([buffer]); |