summaryrefslogtreecommitdiff
path: root/ext/websocket/01_websocket.js
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-03-09 09:36:17 +0530
committerGitHub <noreply@github.com>2024-03-09 09:36:17 +0530
commite1fb174f86adce421ee6bbce70e5dc1558c10868 (patch)
treeb0af0727dcde3815a1e45a033239486cee6366e4 /ext/websocket/01_websocket.js
parent0bed4d3e5153aaf2e06fb6579ac6f24acf63567f (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.js14
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]);