diff options
author | Marcos Casagrande <marcoscvp90@gmail.com> | 2022-09-29 17:38:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-29 17:38:04 +0200 |
commit | 927f4e2e83719aac3dcc4d9ae422cbbf76bd7bcd (patch) | |
tree | 9dc6dd8633471ca73ddc88941f4706b65c1a5b66 /ext | |
parent | 15ea624790f2f96ba9d852f34d114d6c8329245a (diff) |
fix(ext/fetch): `Body#bodyUsed` for static body (#16080)
This fixes a bug where `Body#bodyUsed` incorrectly returns `false`
for a body that has actually already been consumed, after `Body#body`
is called.
Diffstat (limited to 'ext')
-rw-r--r-- | ext/fetch/22_body.js | 4 | ||||
-rw-r--r-- | ext/web/06_streams.js | 10 |
2 files changed, 14 insertions, 0 deletions
diff --git a/ext/fetch/22_body.js b/ext/fetch/22_body.js index 97a8a8db1..6e9a57447 100644 --- a/ext/fetch/22_body.js +++ b/ext/fetch/22_body.js @@ -28,6 +28,8 @@ const { isReadableStreamDisturbed, errorReadableStream, + readableStreamClose, + readableStreamDisturb, createProxy, ReadableStreamPrototype, } = globalThis.__bootstrap.streams; @@ -92,6 +94,8 @@ if (consumed) { this.streamOrStatic = new ReadableStream(); this.streamOrStatic.getReader(); + readableStreamDisturb(this.streamOrStatic); + readableStreamClose(this.streamOrStatic); } else { this.streamOrStatic = new ReadableStream({ start(controller) { diff --git a/ext/web/06_streams.js b/ext/web/06_streams.js index bd1714964..bd3b79149 100644 --- a/ext/web/06_streams.js +++ b/ext/web/06_streams.js @@ -1153,6 +1153,15 @@ reader[_closedPromise].resolve(undefined); } + /** + * @template R + * @param {ReadableStream<R>} stream + * @returns {void} + */ + function readableStreamDisturb(stream) { + stream[_disturbed] = true; + } + /** @param {ReadableStreamDefaultController<any>} controller */ function readableStreamDefaultControllerCallPullIfNeeded(controller) { const shouldPull = readableStreamDefaultcontrollerShouldCallPull( @@ -5910,6 +5919,7 @@ createProxy, writableStreamClose, readableStreamClose, + readableStreamDisturb, readableStreamForRid, getReadableStreamRid, Deferred, |