aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/webcore/streams.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-15 00:13:09 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-15 00:13:09 -0800
commitc7e3b4aaa6d0ffdcaca3cadd79fe9ef3d96d3ef6 (patch)
tree95c18a00a89ac0df66bccd9e0559d9eb7205fb08 /src/bun.js/webcore/streams.zig
parent44babb9ce5a4e26fc43b002dedbf194c31331a0e (diff)
downloadbun-jarred/dump.tar.gz
bun-jarred/dump.tar.zst
bun-jarred/dump.zip
Diffstat (limited to 'src/bun.js/webcore/streams.zig')
-rw-r--r--src/bun.js/webcore/streams.zig31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/bun.js/webcore/streams.zig b/src/bun.js/webcore/streams.zig
index dcbe12ce2..a0a7091f5 100644
--- a/src/bun.js/webcore/streams.zig
+++ b/src/bun.js/webcore/streams.zig
@@ -3767,22 +3767,25 @@ pub const FileReader = struct {
.pending = &this.pending,
};
}
- }
-
- // const rc: JSC.Node.Maybe(usize) = if (comptime Environment.isLinux) brk: {
- // if (len == 65536 and this.has_adjusted_pipe_size_on_linux and buf_to_use.len > len) {
- // var iovecs = [_]std.os.iovec{.{ .iov_base = @intToPtr([*]u8, @ptrToInt(buf_to_use.ptr)), .iov_len = @intCast(usize, buf_to_use.len) }};
- // const rc = bun.C.linux.vmsplice(fd, &iovecs, 1, 0);
- // Output.debug("vmsplice({d}, {d}) = {d}", .{ fd, buf_to_use.len, rc });
- // if (JSC.Node.Maybe(usize).errnoSys(rc, .read)) |err| {
- // break :brk err;
- // }
+ } else if (this.isFIFO() and this.poll_ref == null and available_to_read == null) {
+ // we don't know if it's readable or not
+ if (!bun.isReadable(fd)) {
+ if (free_buffer_on_error) {
+ bun.default_allocator.free(buf_to_use);
+ buf_to_use = read_buf;
+ }
- // break :brk JSC.Node.Maybe(usize){ .result = @intCast(usize, rc) };
- // }
+ if (view != .zero) {
+ this.view.set(this.globalThis(), view);
+ this.buf = read_buf;
+ }
- // break :brk Syscall.read(fd, buf_to_use);
- // } else Syscall.read(fd, buf_to_use);
+ this.watch(fd);
+ return .{
+ .pending = &this.pending,
+ };
+ }
+ }
switch (Syscall.read(fd, buf_to_use)) {
.err => |err| {