summaryrefslogtreecommitdiff
path: root/ext/flash/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ext/flash/lib.rs')
-rw-r--r--ext/flash/lib.rs12
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)]