summaryrefslogtreecommitdiff
path: root/ext/flash
diff options
context:
space:
mode:
Diffstat (limited to 'ext/flash')
-rw-r--r--ext/flash/01_http.js9
-rw-r--r--ext/flash/lib.rs12
2 files changed, 13 insertions, 8 deletions
diff --git a/ext/flash/01_http.js b/ext/flash/01_http.js
index fcea23a95..789979ff9 100644
--- a/ext/flash/01_http.js
+++ b/ext/flash/01_http.js
@@ -10,7 +10,7 @@
const {
ReadableStream,
ReadableStreamPrototype,
- getReadableStreamRid,
+ getReadableStreamResourceBacking,
readableStreamClose,
_state,
} = window.__bootstrap.streams;
@@ -333,8 +333,8 @@
}
if (isStreamingResponseBody === true) {
- const resourceRid = getReadableStreamRid(respBody);
- if (resourceRid) {
+ const resourceBacking = getReadableStreamResourceBacking(respBody);
+ if (resourceBacking) {
if (respBody.locked) {
throw new TypeError("ReadableStream is locked.");
}
@@ -352,7 +352,8 @@
),
serverId,
i,
- resourceRid,
+ resourceBacking.rid,
+ resourceBacking.autoClose,
).then(() => {
// Release JS lock.
readableStreamClose(respBody);
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)]