commit a4559271501670b39305fc3575ae8d87fa03d35e (tree)
parent 1653a9b2597c66cbcc88ea75d8a4b88c163584a5
Author: Bill Nagel <bill@axzez.com>
Date: Wed, 13 Jul 2022 00:27:32 -0400
handle HOSTUNREACH for blocking and non-blocking connects
Diffstat:
1 file changed, 2 insertions(+), 0 deletions(-)
diff --git a/lib/std/os.zig b/lib/std/os.zig
@@ -3966,6 +3966,7 @@ pub fn connect(sock: socket_t, sock_addr: *const sockaddr, len: socklen_t) Conne
.FAULT => unreachable, // The socket structure address is outside the user's address space.
.INTR => continue,
.ISCONN => unreachable, // The socket is already connected.
+ .HOSTUNREACH => return error.NetworkUnreachable,
.NETUNREACH => return error.NetworkUnreachable,
.NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket.
.PROTOTYPE => unreachable, // The socket type does not support the requested communications protocol.
@@ -3995,6 +3996,7 @@ pub fn getsockoptError(sockfd: fd_t) ConnectError!void {
.CONNREFUSED => return error.ConnectionRefused,
.FAULT => unreachable, // The socket structure address is outside the user's address space.
.ISCONN => unreachable, // The socket is already connected.
+ .HOSTUNREACH => return error.NetworkUnreachable,
.NETUNREACH => return error.NetworkUnreachable,
.NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket.
.PROTOTYPE => unreachable, // The socket type does not support the requested communications protocol.