aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-25 00:08:48 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-25 00:08:48 -0800
commit61673fa705478f8bfcd24aa308480a0e30e35317 (patch)
tree37de7f3233047f26e4655b168aa83e52f61cdaa6
parentd1a4f4fd6981a06920adb632dde2562b76ddc4d0 (diff)
downloadbun-61673fa705478f8bfcd24aa308480a0e30e35317.tar.gz
bun-61673fa705478f8bfcd24aa308480a0e30e35317.tar.zst
bun-61673fa705478f8bfcd24aa308480a0e30e35317.zip
Add recv
-rw-r--r--src/bun.js/node/syscall.zig11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/bun.js/node/syscall.zig b/src/bun.js/node/syscall.zig
index 1554186bc..cbcb32e71 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;