summaryrefslogtreecommitdiff
path: root/ext/web/14_compression.js
diff options
context:
space:
mode:
authorFlorian Schwalm <68847951+egfx-notifications@users.noreply.github.com>2024-02-13 22:45:23 +0100
committerGitHub <noreply@github.com>2024-02-13 21:45:23 +0000
commit082f8128b8d784c599fdf2c0d857dbbe6abbc7fe (patch)
tree340091c16273e3faca4e08465ef8685086a3907c /ext/web/14_compression.js
parent365d7886480281056c930174d756ae660619b044 (diff)
fix(ext/web): Prevent (De-)CompressionStream resource leak on stream cancellation (#21199)
Based on #21074 and #20741 I was looking for further potential use cases of `TransformStream` `cancel()` method, so here go `CompressionStream` and `DecompressionStream`. Fixes #14212
Diffstat (limited to 'ext/web/14_compression.js')
-rw-r--r--ext/web/14_compression.js10
1 files changed, 8 insertions, 2 deletions
diff --git a/ext/web/14_compression.js b/ext/web/14_compression.js
index 1ec9e5462..0d3a8ebd0 100644
--- a/ext/web/14_compression.js
+++ b/ext/web/14_compression.js
@@ -50,9 +50,12 @@ class CompressionStream {
maybeEnqueue(controller, output);
},
flush(controller) {
- const output = op_compression_finish(rid);
+ const output = op_compression_finish(rid, true);
maybeEnqueue(controller, output);
},
+ cancel: (_reason) => {
+ op_compression_finish(rid, false);
+ },
});
this[webidl.brand] = webidl.brand;
@@ -109,9 +112,12 @@ class DecompressionStream {
maybeEnqueue(controller, output);
},
flush(controller) {
- const output = op_compression_finish(rid);
+ const output = op_compression_finish(rid, true);
maybeEnqueue(controller, output);
},
+ cancel: (_reason) => {
+ op_compression_finish(rid, false);
+ },
});
this[webidl.brand] = webidl.brand;