From 61673fa705478f8bfcd24aa308480a0e30e35317 Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Fri, 25 Nov 2022 00:08:48 -0800 Subject: [PATCH] Add recv --- src/bun.js/node/syscall.zig | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/bun.js/node/syscall.zig b/src/bun.js/node/syscall.zig index 1554186bc8..cbcb32e71d 100644 --- a/src/bun.js/node/syscall.zig +++ b/src/bun.js/node/syscall.zig @@ -333,15 +333,22 @@ pub fn read(fd: os.fd_t, buf: []u8) Maybe(usize) { } pub fn recv(fd: os.fd_t, buf: []u8, flag: u32) Maybe(usize) { + const adjusted_len = @minimum(buf.len, max_count); + if (comptime Environment.isMac) { - const rc = system.@"recvfrom$NOCANCEL"(fd, buf.ptr, buf.len, flag, null, null); + const rc = system.@"recvfrom$NOCANCEL"(fd, buf.ptr, adjusted_len, flag, null, null); + log("recv({d}, {d}, {d}) = {d}", .{ fd, adjusted_len, flag, rc }); + if (Maybe(usize).errnoSys(rc, .recv)) |err| { return err; } + return Maybe(usize){ .result = @intCast(usize, rc) }; } else { while (true) { - const rc = linux.recvfrom(fd, buf.ptr, buf.len, flag | os.SOCK.CLOEXEC | linux.MSG.CMSG_CLOEXEC, null, null); + const rc = linux.recvfrom(fd, buf.ptr, adjusted_len, flag | os.SOCK.CLOEXEC | linux.MSG.CMSG_CLOEXEC, null, null); + log("recv({d}, {d}, {d}) = {d}", .{ fd, adjusted_len, flag, rc }); + if (Maybe(usize).errnoSysFd(rc, .recv, fd)) |err| { if (err.getErrno() == .INTR) continue; return err;