summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/websocket/01_websocket.js14
-rw-r--r--ext/websocket/lib.rs16
2 files changed, 22 insertions, 8 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]);
diff --git a/ext/websocket/lib.rs b/ext/websocket/lib.rs
index e6f382c34..e4df9d3d3 100644
--- a/ext/websocket/lib.rs
+++ b/ext/websocket/lib.rs
@@ -703,9 +703,11 @@ pub async fn op_ws_close(
pub fn op_ws_get_buffer(
state: &mut OpState,
#[smi] rid: ResourceId,
-) -> Result<ToJsBuffer, AnyError> {
- let resource = state.resource_table.get::<ServerWebSocket>(rid)?;
- Ok(resource.buffer.take().unwrap().into())
+) -> Option<ToJsBuffer> {
+ let Ok(resource) = state.resource_table.get::<ServerWebSocket>(rid) else {
+ return None;
+ };
+ resource.buffer.take().map(ToJsBuffer::from)
}
#[op2]
@@ -713,9 +715,11 @@ pub fn op_ws_get_buffer(
pub fn op_ws_get_buffer_as_string(
state: &mut OpState,
#[smi] rid: ResourceId,
-) -> Result<String, AnyError> {
- let resource = state.resource_table.get::<ServerWebSocket>(rid)?;
- Ok(resource.string.take().unwrap())
+) -> Option<String> {
+ let Ok(resource) = state.resource_table.get::<ServerWebSocket>(rid) else {
+ return None;
+ };
+ resource.string.take()
}
#[op2]