diff options
Diffstat (limited to 'ext/flash/lib.rs')
-rw-r--r-- | ext/flash/lib.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/ext/flash/lib.rs b/ext/flash/lib.rs index 0714e379d..a7bd8b439 100644 --- a/ext/flash/lib.rs +++ b/ext/flash/lib.rs @@ -205,16 +205,20 @@ async fn op_flash_write_resource( server_id: u32, token: u32, resource_id: deno_core::ResourceId, + auto_close: bool, ) -> Result<(), AnyError> { - let resource = op_state.borrow_mut().resource_table.take_any(resource_id)?; - let sock = { + let (resource, sock) = { let op_state = &mut op_state.borrow_mut(); + let resource = if auto_close { + op_state.resource_table.take_any(resource_id)? + } else { + op_state.resource_table.get_any(resource_id)? + }; let flash_ctx = op_state.borrow_mut::<FlashContext>(); let ctx = flash_ctx.servers.get_mut(&server_id).unwrap(); - ctx.requests.remove(&token).unwrap().socket() + (resource, ctx.requests.remove(&token).unwrap().socket()) }; - drop(op_state); let _ = sock.write(&response); #[cfg(unix)] |