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/lib.rs | |
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/lib.rs')
-rw-r--r-- | ext/websocket/lib.rs | 16 |
1 files changed, 10 insertions, 6 deletions
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] |