| ... | ... | @@ -4774,6 +4774,12 @@ pub const SendError = error{ |
| 4774 | 4774 | BrokenPipe, |
| 4775 | 4775 | |
| 4776 | 4776 | FileDescriptorNotASocket, |
| 4777 | |
| 4778 | /// Network is unreachable. |
| 4779 | NetworkUnreachable, |
| 4780 | |
| 4781 | /// The local network interface used to reach the destination is down. |
| 4782 | NetworkSubsystemFailed, |
| 4777 | 4783 | } || UnexpectedError; |
| 4778 | 4784 | |
| 4779 | 4785 | pub const SendToError = SendError || error{ |
| ... | ... | @@ -4790,15 +4796,8 @@ pub const SendToError = SendError || error{ |
| 4790 | 4796 | FileNotFound, |
| 4791 | 4797 | NotDir, |
| 4792 | 4798 | |
| 4793 | | /// Network is unreachable. |
| 4794 | | NetworkUnreachable, |
| 4795 | | |
| 4796 | | /// Insufficient memory was available to fulfill the request. |
| 4797 | | SystemResources, |
| 4798 | | |
| 4799 | 4799 | /// The socket is not connected (connection-oriented sockets only). |
| 4800 | 4800 | SocketNotConnected, |
| 4801 | | WouldBlock, |
| 4802 | 4801 | AddressNotAvailable, |
| 4803 | 4802 | }; |
| 4804 | 4803 | |
| ... | ... | @@ -4853,7 +4852,7 @@ pub fn sendto( |
| 4853 | 4852 | .WSAEHOSTUNREACH => return error.NetworkUnreachable, |
| 4854 | 4853 | // TODO: WSAEINPROGRESS, WSAEINTR |
| 4855 | 4854 | .WSAEINVAL => unreachable, |
| 4856 | | .WSAENETDOWN => return error.NetworkUnreachable, |
| 4855 | .WSAENETDOWN => return error.NetworkSubsystemFailed, |
| 4857 | 4856 | .WSAENETRESET => return error.ConnectionResetByPeer, |
| 4858 | 4857 | .WSAENETUNREACH => return error.NetworkUnreachable, |
| 4859 | 4858 | .WSAENOTCONN => return error.SocketNotConnected, |
| ... | ... | @@ -4882,7 +4881,6 @@ pub fn sendto( |
| 4882 | 4881 | EMSGSIZE => return error.MessageTooBig, |
| 4883 | 4882 | ENOBUFS => return error.SystemResources, |
| 4884 | 4883 | ENOMEM => return error.SystemResources, |
| 4885 | | ENOTCONN => unreachable, // The socket is not connected, and no target has been given. |
| 4886 | 4884 | ENOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. |
| 4887 | 4885 | EOPNOTSUPP => unreachable, // Some bit in the flags argument is inappropriate for the socket type. |
| 4888 | 4886 | EPIPE => return error.BrokenPipe, |
| ... | ... | @@ -4892,6 +4890,9 @@ pub fn sendto( |
| 4892 | 4890 | ENOENT => return error.FileNotFound, |
| 4893 | 4891 | ENOTDIR => return error.NotDir, |
| 4894 | 4892 | EHOSTUNREACH => return error.NetworkUnreachable, |
| 4893 | ENETUNREACH => return error.NetworkUnreachable, |
| 4894 | ENOTCONN => return error.SocketNotConnected, |
| 4895 | ENETDOWN => return error.NetworkSubsystemFailed, |
| 4895 | 4896 | else => |err| return unexpectedErrno(err), |
| 4896 | 4897 | } |
| 4897 | 4898 | } |
| ... | ... | @@ -4923,7 +4924,16 @@ pub fn send( |
| 4923 | 4924 | buf: []const u8, |
| 4924 | 4925 | flags: u32, |
| 4925 | 4926 | ) SendError!usize { |
| 4926 | | return sendto(sockfd, buf, flags, null, 0); |
| 4927 | return sendto(sockfd, buf, flags, null, 0) catch |err| switch (err) { |
| 4928 | error.AddressFamilyNotSupported => unreachable, |
| 4929 | error.SymLinkLoop => unreachable, |
| 4930 | error.NameTooLong => unreachable, |
| 4931 | error.FileNotFound => unreachable, |
| 4932 | error.NotDir => unreachable, |
| 4933 | error.NetworkUnreachable => unreachable, |
| 4934 | error.AddressNotAvailable => unreachable, |
| 4935 | else => |e| return e, |
| 4936 | }; |
| 4927 | 4937 | } |
| 4928 | 4938 | |
| 4929 | 4939 | pub const SendFileError = PReadError || WriteError || SendError; |