aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/api/server.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/api/server.zig')
-rw-r--r--src/bun.js/api/server.zig15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/bun.js/api/server.zig b/src/bun.js/api/server.zig
index c4724b1b8..531d4830b 100644
--- a/src/bun.js/api/server.zig
+++ b/src/bun.js/api/server.zig
@@ -1428,10 +1428,17 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp
stream.value.ensureStillAlive();
- if (!stream.isLocked(this.server.globalThis)) {
- streamLog("is not locked", .{});
- this.renderMissing();
- return;
+ const is_in_progress = response_stream.sink.has_backpressure or !(response_stream.sink.wrote == 0 and
+ response_stream.sink.buffer.len == 0);
+
+ if (!stream.isLocked(this.server.globalThis) and !is_in_progress) {
+ if (JSC.WebCore.ReadableStream.fromJS(stream.value, this.server.globalThis)) |comparator| {
+ if (std.meta.activeTag(comparator.ptr) == std.meta.activeTag(stream.ptr)) {
+ streamLog("is not locked", .{});
+ this.renderMissing();
+ return;
+ }
+ }
}
this.resp.onAborted(*ResponseStream, ResponseStream.onAborted, &response_stream.sink);