diff options
author | 2022-11-15 00:13:09 -0800 | |
---|---|---|
committer | 2022-11-15 00:13:09 -0800 | |
commit | c7e3b4aaa6d0ffdcaca3cadd79fe9ef3d96d3ef6 (patch) | |
tree | 95c18a00a89ac0df66bccd9e0559d9eb7205fb08 /src/bun.js/webcore/streams.zig | |
parent | 44babb9ce5a4e26fc43b002dedbf194c31331a0e (diff) | |
download | bun-jarred/dump.tar.gz bun-jarred/dump.tar.zst bun-jarred/dump.zip |
wipjarred/dump
Diffstat (limited to 'src/bun.js/webcore/streams.zig')
-rw-r--r-- | src/bun.js/webcore/streams.zig | 31 |
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| { |