os/posix: handle ECONNRESET for write/writev

This commit is contained in:
lithdew 2021-04-12 17:26:28 +09:00 committed by Andrew Kelley
parent 5a3ea9bece
commit 81adcd533e
2 changed files with 6 additions and 0 deletions

View File

@ -675,6 +675,9 @@ pub const WriteError = error{
/// This error occurs when no global event loop is configured,
/// and reading from the file descriptor would block.
WouldBlock,
/// Connection reset by peer.
ConnectionResetByPeer,
} || UnexpectedError;
/// Write to a file descriptor.
@ -752,6 +755,7 @@ pub fn write(fd: fd_t, bytes: []const u8) WriteError!usize {
ENOSPC => return error.NoSpaceLeft,
EPERM => return error.AccessDenied,
EPIPE => return error.BrokenPipe,
ECONNRESET => return error.ConnectionResetByPeer,
else => |err| return unexpectedErrno(err),
}
}
@ -820,6 +824,7 @@ pub fn writev(fd: fd_t, iov: []const iovec_const) WriteError!usize {
ENOSPC => return error.NoSpaceLeft,
EPERM => return error.AccessDenied,
EPIPE => return error.BrokenPipe,
ECONNRESET => return error.ConnectionResetByPeer,
else => |err| return unexpectedErrno(err),
}
}

View File

@ -2859,6 +2859,7 @@ const FmtError = error{
Unseekable,
NotOpenForWriting,
UnsupportedEncoding,
ConnectionResetByPeer,
} || fs.File.OpenError;
fn fmtPath(fmt: *Fmt, file_path: []const u8, check_mode: bool, dir: fs.Dir, sub_path: []const u8) FmtError!void {