From 42160327dc55fd4a00634cc3fd461a5844aa8e73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Mathieu?= Date: Sat, 15 Mar 2025 12:04:42 +0100 Subject: [PATCH] posix/write: catch MSGSIZE error (#23238) --- lib/std/posix.zig | 5 +++++ src/fmt.zig | 1 + 2 files changed, 6 insertions(+) diff --git a/lib/std/posix.zig b/lib/std/posix.zig index c07d6e6f0d..f920784ca5 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -1198,6 +1198,10 @@ pub const WriteError = error{ /// This error occurs when a device gets disconnected before or mid-flush /// while it's being written to - errno(6): No such device or address. NoDevice, + + /// The socket type requires that message be sent atomically, and the size of the message + /// to be sent made this impossible. The message is not transmitted. + MessageTooBig, } || UnexpectedError; /// Write to a file descriptor. @@ -1279,6 +1283,7 @@ pub fn write(fd: fd_t, bytes: []const u8) WriteError!usize { .CONNRESET => return error.ConnectionResetByPeer, .BUSY => return error.DeviceBusy, .NXIO => return error.NoDevice, + .MSGSIZE => return error.MessageTooBig, else => |err| return unexpectedErrno(err), } } diff --git a/src/fmt.zig b/src/fmt.zig index a86a4191d1..6b1d73951e 100644 --- a/src/fmt.zig +++ b/src/fmt.zig @@ -202,6 +202,7 @@ const FmtError = error{ DestinationAddressRequired, DiskQuota, FileTooBig, + MessageTooBig, InputOutput, NoSpaceLeft, AccessDenied,