| ... | @@ -898,7 +898,7 @@ fn dirMakePosix(userdata: ?*anyopaque, dir: Io.Dir, sub_path: []const u8, mode: | ... | @@ -898,7 +898,7 @@ fn dirMakePosix(userdata: ?*anyopaque, dir: Io.Dir, sub_path: []const u8, mode: |
| 898 | .CANCELED => return error.Canceled, | 898 | .CANCELED => return error.Canceled, |
| 899 | | 899 | |
| 900 | .ACCES => return error.AccessDenied, | 900 | .ACCES => return error.AccessDenied, |
| 901 | .BADF => |err| return errnoBug(err), | 901 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 902 | .PERM => return error.PermissionDenied, | 902 | .PERM => return error.PermissionDenied, |
| 903 | .DQUOT => return error.DiskQuota, | 903 | .DQUOT => return error.DiskQuota, |
| 904 | .EXIST => return error.PathAlreadyExists, | 904 | .EXIST => return error.PathAlreadyExists, |
| ... | @@ -930,7 +930,7 @@ fn dirMakeWasi(userdata: ?*anyopaque, dir: Io.Dir, sub_path: []const u8, mode: I | ... | @@ -930,7 +930,7 @@ fn dirMakeWasi(userdata: ?*anyopaque, dir: Io.Dir, sub_path: []const u8, mode: I |
| 930 | .CANCELED => return error.Canceled, | 930 | .CANCELED => return error.Canceled, |
| 931 | | 931 | |
| 932 | .ACCES => return error.AccessDenied, | 932 | .ACCES => return error.AccessDenied, |
| 933 | .BADF => |err| return errnoBug(err), | 933 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 934 | .PERM => return error.PermissionDenied, | 934 | .PERM => return error.PermissionDenied, |
| 935 | .DQUOT => return error.DiskQuota, | 935 | .DQUOT => return error.DiskQuota, |
| 936 | .EXIST => return error.PathAlreadyExists, | 936 | .EXIST => return error.PathAlreadyExists, |
| ... | @@ -989,7 +989,7 @@ fn dirStatPathLinux( | ... | @@ -989,7 +989,7 @@ fn dirStatPathLinux( |
| 989 | .CANCELED => return error.Canceled, | 989 | .CANCELED => return error.Canceled, |
| 990 | | 990 | |
| 991 | .ACCES => return error.AccessDenied, | 991 | .ACCES => return error.AccessDenied, |
| 992 | .BADF => |err| return errnoBug(err), | 992 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 993 | .FAULT => |err| return errnoBug(err), | 993 | .FAULT => |err| return errnoBug(err), |
| 994 | .INVAL => |err| return errnoBug(err), | 994 | .INVAL => |err| return errnoBug(err), |
| 995 | .LOOP => return error.SymLinkLoop, | 995 | .LOOP => return error.SymLinkLoop, |
| ... | @@ -1024,7 +1024,7 @@ fn dirStatPathPosix( | ... | @@ -1024,7 +1024,7 @@ fn dirStatPathPosix( |
| 1024 | .CANCELED => return error.Canceled, | 1024 | .CANCELED => return error.Canceled, |
| 1025 | | 1025 | |
| 1026 | .INVAL => |err| return errnoBug(err), | 1026 | .INVAL => |err| return errnoBug(err), |
| 1027 | .BADF => |err| return errnoBug(err), // Always a race condition. | 1027 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1028 | .NOMEM => return error.SystemResources, | 1028 | .NOMEM => return error.SystemResources, |
| 1029 | .ACCES => return error.AccessDenied, | 1029 | .ACCES => return error.AccessDenied, |
| 1030 | .PERM => return error.PermissionDenied, | 1030 | .PERM => return error.PermissionDenied, |
| ... | @@ -1060,7 +1060,7 @@ fn dirStatPathWasi( | ... | @@ -1060,7 +1060,7 @@ fn dirStatPathWasi( |
| 1060 | .CANCELED => return error.Canceled, | 1060 | .CANCELED => return error.Canceled, |
| 1061 | | 1061 | |
| 1062 | .INVAL => |err| return errnoBug(err), | 1062 | .INVAL => |err| return errnoBug(err), |
| 1063 | .BADF => |err| return errnoBug(err), // Always a race condition. | 1063 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1064 | .NOMEM => return error.SystemResources, | 1064 | .NOMEM => return error.SystemResources, |
| 1065 | .ACCES => return error.AccessDenied, | 1065 | .ACCES => return error.AccessDenied, |
| 1066 | .FAULT => |err| return errnoBug(err), | 1066 | .FAULT => |err| return errnoBug(err), |
| ... | @@ -1088,7 +1088,7 @@ fn fileStatPosix(userdata: ?*anyopaque, file: Io.File) Io.File.StatError!Io.File | ... | @@ -1088,7 +1088,7 @@ fn fileStatPosix(userdata: ?*anyopaque, file: Io.File) Io.File.StatError!Io.File |
| 1088 | .CANCELED => return error.Canceled, | 1088 | .CANCELED => return error.Canceled, |
| 1089 | | 1089 | |
| 1090 | .INVAL => |err| return errnoBug(err), | 1090 | .INVAL => |err| return errnoBug(err), |
| 1091 | .BADF => |err| return errnoBug(err), | 1091 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1092 | .NOMEM => return error.SystemResources, | 1092 | .NOMEM => return error.SystemResources, |
| 1093 | .ACCES => return error.AccessDenied, | 1093 | .ACCES => return error.AccessDenied, |
| 1094 | else => |err| return posix.unexpectedErrno(err), | 1094 | else => |err| return posix.unexpectedErrno(err), |
| ... | @@ -1115,7 +1115,7 @@ fn fileStatLinux(userdata: ?*anyopaque, file: Io.File) Io.File.StatError!Io.File | ... | @@ -1115,7 +1115,7 @@ fn fileStatLinux(userdata: ?*anyopaque, file: Io.File) Io.File.StatError!Io.File |
| 1115 | .CANCELED => return error.Canceled, | 1115 | .CANCELED => return error.Canceled, |
| 1116 | | 1116 | |
| 1117 | .ACCES => |err| return errnoBug(err), | 1117 | .ACCES => |err| return errnoBug(err), |
| 1118 | .BADF => |err| return errnoBug(err), | 1118 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1119 | .FAULT => |err| return errnoBug(err), | 1119 | .FAULT => |err| return errnoBug(err), |
| 1120 | .INVAL => |err| return errnoBug(err), | 1120 | .INVAL => |err| return errnoBug(err), |
| 1121 | .LOOP => |err| return errnoBug(err), | 1121 | .LOOP => |err| return errnoBug(err), |
| ... | @@ -1147,7 +1147,7 @@ fn fileStatWasi(userdata: ?*anyopaque, file: Io.File) Io.File.StatError!Io.File. | ... | @@ -1147,7 +1147,7 @@ fn fileStatWasi(userdata: ?*anyopaque, file: Io.File) Io.File.StatError!Io.File. |
| 1147 | .CANCELED => return error.Canceled, | 1147 | .CANCELED => return error.Canceled, |
| 1148 | | 1148 | |
| 1149 | .INVAL => |err| return errnoBug(err), | 1149 | .INVAL => |err| return errnoBug(err), |
| 1150 | .BADF => |err| return errnoBug(err), | 1150 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1151 | .NOMEM => return error.SystemResources, | 1151 | .NOMEM => return error.SystemResources, |
| 1152 | .ACCES => return error.AccessDenied, | 1152 | .ACCES => return error.AccessDenied, |
| 1153 | .NOTCAPABLE => return error.AccessDenied, | 1153 | .NOTCAPABLE => return error.AccessDenied, |
| ... | @@ -1220,7 +1220,7 @@ fn dirAccessWasi( | ... | @@ -1220,7 +1220,7 @@ fn dirAccessWasi( |
| 1220 | .CANCELED => return error.Canceled, | 1220 | .CANCELED => return error.Canceled, |
| 1221 | | 1221 | |
| 1222 | .INVAL => |err| return errnoBug(err), | 1222 | .INVAL => |err| return errnoBug(err), |
| 1223 | .BADF => |err| return errnoBug(err), // Always a race condition. | 1223 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1224 | .NOMEM => return error.SystemResources, | 1224 | .NOMEM => return error.SystemResources, |
| 1225 | .ACCES => return error.AccessDenied, | 1225 | .ACCES => return error.AccessDenied, |
| 1226 | .FAULT => |err| return errnoBug(err), | 1226 | .FAULT => |err| return errnoBug(err), |
| ... | @@ -1305,7 +1305,7 @@ fn dirCreateFilePosix( | ... | @@ -1305,7 +1305,7 @@ fn dirCreateFilePosix( |
| 1305 | | 1305 | |
| 1306 | .FAULT => |err| return errnoBug(err), | 1306 | .FAULT => |err| return errnoBug(err), |
| 1307 | .INVAL => return error.BadPathName, | 1307 | .INVAL => return error.BadPathName, |
| 1308 | .BADF => |err| return errnoBug(err), | 1308 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1309 | .ACCES => return error.AccessDenied, | 1309 | .ACCES => return error.AccessDenied, |
| 1310 | .FBIG => return error.FileTooBig, | 1310 | .FBIG => return error.FileTooBig, |
| 1311 | .OVERFLOW => return error.FileTooBig, | 1311 | .OVERFLOW => return error.FileTooBig, |
| ... | @@ -1347,7 +1347,7 @@ fn dirCreateFilePosix( | ... | @@ -1347,7 +1347,7 @@ fn dirCreateFilePosix( |
| 1347 | .INTR => continue, | 1347 | .INTR => continue, |
| 1348 | .CANCELED => return error.Canceled, | 1348 | .CANCELED => return error.Canceled, |
| 1349 | | 1349 | |
| 1350 | .BADF => |err| return errnoBug(err), | 1350 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1351 | .INVAL => |err| return errnoBug(err), // invalid parameters | 1351 | .INVAL => |err| return errnoBug(err), // invalid parameters |
| 1352 | .NOLCK => return error.SystemResources, | 1352 | .NOLCK => return error.SystemResources, |
| 1353 | .AGAIN => return error.WouldBlock, | 1353 | .AGAIN => return error.WouldBlock, |
| ... | @@ -1427,7 +1427,7 @@ fn dirCreateFileWasi( | ... | @@ -1427,7 +1427,7 @@ fn dirCreateFileWasi( |
| 1427 | .FAULT => |err| return errnoBug(err), | 1427 | .FAULT => |err| return errnoBug(err), |
| 1428 | // Provides INVAL with a linux host on a bad path name, but NOENT on Windows | 1428 | // Provides INVAL with a linux host on a bad path name, but NOENT on Windows |
| 1429 | .INVAL => return error.BadPathName, | 1429 | .INVAL => return error.BadPathName, |
| 1430 | .BADF => |err| return errnoBug(err), | 1430 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1431 | .ACCES => return error.AccessDenied, | 1431 | .ACCES => return error.AccessDenied, |
| 1432 | .FBIG => return error.FileTooBig, | 1432 | .FBIG => return error.FileTooBig, |
| 1433 | .OVERFLOW => return error.FileTooBig, | 1433 | .OVERFLOW => return error.FileTooBig, |
| ... | @@ -1506,7 +1506,7 @@ fn dirOpenFile( | ... | @@ -1506,7 +1506,7 @@ fn dirOpenFile( |
| 1506 | | 1506 | |
| 1507 | .FAULT => |err| return errnoBug(err), | 1507 | .FAULT => |err| return errnoBug(err), |
| 1508 | .INVAL => return error.BadPathName, | 1508 | .INVAL => return error.BadPathName, |
| 1509 | .BADF => |err| return errnoBug(err), | 1509 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1510 | .ACCES => return error.AccessDenied, | 1510 | .ACCES => return error.AccessDenied, |
| 1511 | .FBIG => return error.FileTooBig, | 1511 | .FBIG => return error.FileTooBig, |
| 1512 | .OVERFLOW => return error.FileTooBig, | 1512 | .OVERFLOW => return error.FileTooBig, |
| ... | @@ -1548,7 +1548,7 @@ fn dirOpenFile( | ... | @@ -1548,7 +1548,7 @@ fn dirOpenFile( |
| 1548 | .INTR => continue, | 1548 | .INTR => continue, |
| 1549 | .CANCELED => return error.Canceled, | 1549 | .CANCELED => return error.Canceled, |
| 1550 | | 1550 | |
| 1551 | .BADF => |err| return errnoBug(err), | 1551 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1552 | .INVAL => |err| return errnoBug(err), // invalid parameters | 1552 | .INVAL => |err| return errnoBug(err), // invalid parameters |
| 1553 | .NOLCK => return error.SystemResources, | 1553 | .NOLCK => return error.SystemResources, |
| 1554 | .AGAIN => return error.WouldBlock, | 1554 | .AGAIN => return error.WouldBlock, |
| ... | @@ -1653,7 +1653,7 @@ fn fileReadStreaming(userdata: ?*anyopaque, file: Io.File, data: [][]u8) Io.File | ... | @@ -1653,7 +1653,7 @@ fn fileReadStreaming(userdata: ?*anyopaque, file: Io.File, data: [][]u8) Io.File |
| 1653 | | 1653 | |
| 1654 | .INVAL => |err| return errnoBug(err), | 1654 | .INVAL => |err| return errnoBug(err), |
| 1655 | .FAULT => |err| return errnoBug(err), | 1655 | .FAULT => |err| return errnoBug(err), |
| 1656 | .BADF => |err| return errnoBug(err), | 1656 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1657 | .IO => return error.InputOutput, | 1657 | .IO => return error.InputOutput, |
| 1658 | .ISDIR => return error.IsDir, | 1658 | .ISDIR => return error.IsDir, |
| 1659 | .NOBUFS => return error.SystemResources, | 1659 | .NOBUFS => return error.SystemResources, |
| ... | @@ -1678,7 +1678,7 @@ fn fileReadStreaming(userdata: ?*anyopaque, file: Io.File, data: [][]u8) Io.File | ... | @@ -1678,7 +1678,7 @@ fn fileReadStreaming(userdata: ?*anyopaque, file: Io.File, data: [][]u8) Io.File |
| 1678 | .FAULT => |err| return errnoBug(err), | 1678 | .FAULT => |err| return errnoBug(err), |
| 1679 | .SRCH => return error.ProcessNotFound, | 1679 | .SRCH => return error.ProcessNotFound, |
| 1680 | .AGAIN => return error.WouldBlock, | 1680 | .AGAIN => return error.WouldBlock, |
| 1681 | .BADF => return error.NotOpenForReading, // can be a race condition | 1681 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1682 | .IO => return error.InputOutput, | 1682 | .IO => return error.InputOutput, |
| 1683 | .ISDIR => return error.IsDir, | 1683 | .ISDIR => return error.IsDir, |
| 1684 | .NOBUFS => return error.SystemResources, | 1684 | .NOBUFS => return error.SystemResources, |
| ... | @@ -1779,7 +1779,7 @@ fn fileReadPositional(userdata: ?*anyopaque, file: Io.File, data: [][]u8, offset | ... | @@ -1779,7 +1779,7 @@ fn fileReadPositional(userdata: ?*anyopaque, file: Io.File, data: [][]u8, offset |
| 1779 | .INVAL => |err| return errnoBug(err), | 1779 | .INVAL => |err| return errnoBug(err), |
| 1780 | .FAULT => |err| return errnoBug(err), | 1780 | .FAULT => |err| return errnoBug(err), |
| 1781 | .AGAIN => |err| return errnoBug(err), | 1781 | .AGAIN => |err| return errnoBug(err), |
| 1782 | .BADF => return error.NotOpenForReading, // can be a race condition | 1782 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1783 | .IO => return error.InputOutput, | 1783 | .IO => return error.InputOutput, |
| 1784 | .ISDIR => return error.IsDir, | 1784 | .ISDIR => return error.IsDir, |
| 1785 | .NOBUFS => return error.SystemResources, | 1785 | .NOBUFS => return error.SystemResources, |
| ... | @@ -1807,7 +1807,7 @@ fn fileReadPositional(userdata: ?*anyopaque, file: Io.File, data: [][]u8, offset | ... | @@ -1807,7 +1807,7 @@ fn fileReadPositional(userdata: ?*anyopaque, file: Io.File, data: [][]u8, offset |
| 1807 | .FAULT => |err| return errnoBug(err), | 1807 | .FAULT => |err| return errnoBug(err), |
| 1808 | .SRCH => return error.ProcessNotFound, | 1808 | .SRCH => return error.ProcessNotFound, |
| 1809 | .AGAIN => return error.WouldBlock, | 1809 | .AGAIN => return error.WouldBlock, |
| 1810 | .BADF => return error.NotOpenForReading, // can be a race condition | 1810 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1811 | .IO => return error.InputOutput, | 1811 | .IO => return error.InputOutput, |
| 1812 | .ISDIR => return error.IsDir, | 1812 | .ISDIR => return error.IsDir, |
| 1813 | .NOBUFS => return error.SystemResources, | 1813 | .NOBUFS => return error.SystemResources, |
| ... | @@ -1844,7 +1844,7 @@ fn fileSeekTo(userdata: ?*anyopaque, file: Io.File, offset: u64) Io.File.SeekErr | ... | @@ -1844,7 +1844,7 @@ fn fileSeekTo(userdata: ?*anyopaque, file: Io.File, offset: u64) Io.File.SeekErr |
| 1844 | .INTR => continue, | 1844 | .INTR => continue, |
| 1845 | .CANCELED => return error.Canceled, | 1845 | .CANCELED => return error.Canceled, |
| 1846 | | 1846 | |
| 1847 | .BADF => |err| return errnoBug(err), // Always a race condition. | 1847 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1848 | .INVAL => return error.Unseekable, | 1848 | .INVAL => return error.Unseekable, |
| 1849 | .OVERFLOW => return error.Unseekable, | 1849 | .OVERFLOW => return error.Unseekable, |
| 1850 | .SPIPE => return error.Unseekable, | 1850 | .SPIPE => return error.Unseekable, |
| ... | @@ -1866,7 +1866,7 @@ fn fileSeekTo(userdata: ?*anyopaque, file: Io.File, offset: u64) Io.File.SeekErr | ... | @@ -1866,7 +1866,7 @@ fn fileSeekTo(userdata: ?*anyopaque, file: Io.File, offset: u64) Io.File.SeekErr |
| 1866 | .INTR => continue, | 1866 | .INTR => continue, |
| 1867 | .CANCELED => return error.Canceled, | 1867 | .CANCELED => return error.Canceled, |
| 1868 | | 1868 | |
| 1869 | .BADF => |err| return errnoBug(err), // Always a race condition. | 1869 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1870 | .INVAL => return error.Unseekable, | 1870 | .INVAL => return error.Unseekable, |
| 1871 | .OVERFLOW => return error.Unseekable, | 1871 | .OVERFLOW => return error.Unseekable, |
| 1872 | .SPIPE => return error.Unseekable, | 1872 | .SPIPE => return error.Unseekable, |
| ... | @@ -1885,7 +1885,7 @@ fn fileSeekTo(userdata: ?*anyopaque, file: Io.File, offset: u64) Io.File.SeekErr | ... | @@ -1885,7 +1885,7 @@ fn fileSeekTo(userdata: ?*anyopaque, file: Io.File, offset: u64) Io.File.SeekErr |
| 1885 | .INTR => continue, | 1885 | .INTR => continue, |
| 1886 | .CANCELED => return error.Canceled, | 1886 | .CANCELED => return error.Canceled, |
| 1887 | | 1887 | |
| 1888 | .BADF => |err| return errnoBug(err), // Always a race condition. | 1888 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 1889 | .INVAL => return error.Unseekable, | 1889 | .INVAL => return error.Unseekable, |
| 1890 | .OVERFLOW => return error.Unseekable, | 1890 | .OVERFLOW => return error.Unseekable, |
| 1891 | .SPIPE => return error.Unseekable, | 1891 | .SPIPE => return error.Unseekable, |
| ... | @@ -2111,7 +2111,7 @@ fn netListenIpPosix( | ... | @@ -2111,7 +2111,7 @@ fn netListenIpPosix( |
| 2111 | switch (posix.errno(posix.system.listen(socket_fd, options.kernel_backlog))) { | 2111 | switch (posix.errno(posix.system.listen(socket_fd, options.kernel_backlog))) { |
| 2112 | .SUCCESS => break, | 2112 | .SUCCESS => break, |
| 2113 | .ADDRINUSE => return error.AddressInUse, | 2113 | .ADDRINUSE => return error.AddressInUse, |
| 2114 | .BADF => |err| return errnoBug(err), | 2114 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2115 | else => |err| return posix.unexpectedErrno(err), | 2115 | else => |err| return posix.unexpectedErrno(err), |
| 2116 | } | 2116 | } |
| 2117 | } | 2117 | } |
| ... | @@ -2150,7 +2150,7 @@ fn netListenUnix( | ... | @@ -2150,7 +2150,7 @@ fn netListenUnix( |
| 2150 | switch (posix.errno(posix.system.listen(socket_fd, options.kernel_backlog))) { | 2150 | switch (posix.errno(posix.system.listen(socket_fd, options.kernel_backlog))) { |
| 2151 | .SUCCESS => break, | 2151 | .SUCCESS => break, |
| 2152 | .ADDRINUSE => return error.AddressInUse, | 2152 | .ADDRINUSE => return error.AddressInUse, |
| 2153 | .BADF => |err| return errnoBug(err), | 2153 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2154 | else => |err| return posix.unexpectedErrno(err), | 2154 | else => |err| return posix.unexpectedErrno(err), |
| 2155 | } | 2155 | } |
| 2156 | } | 2156 | } |
| ... | @@ -2178,7 +2178,7 @@ fn posixBindUnix(t: *Threaded, fd: posix.socket_t, addr: *const posix.sockaddr, | ... | @@ -2178,7 +2178,7 @@ fn posixBindUnix(t: *Threaded, fd: posix.socket_t, addr: *const posix.sockaddr, |
| 2178 | .ROFS => return error.ReadOnlyFileSystem, | 2178 | .ROFS => return error.ReadOnlyFileSystem, |
| 2179 | .PERM => return error.PermissionDenied, | 2179 | .PERM => return error.PermissionDenied, |
| 2180 | | 2180 | |
| 2181 | .BADF => |err| return errnoBug(err), // always a race condition if this error is returned | 2181 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2182 | .INVAL => |err| return errnoBug(err), // invalid parameters | 2182 | .INVAL => |err| return errnoBug(err), // invalid parameters |
| 2183 | .NOTSOCK => |err| return errnoBug(err), // invalid `sockfd` | 2183 | .NOTSOCK => |err| return errnoBug(err), // invalid `sockfd` |
| 2184 | .FAULT => |err| return errnoBug(err), // invalid `addr` pointer | 2184 | .FAULT => |err| return errnoBug(err), // invalid `addr` pointer |
| ... | @@ -2197,7 +2197,7 @@ fn posixBind(t: *Threaded, socket_fd: posix.socket_t, addr: *const posix.sockadd | ... | @@ -2197,7 +2197,7 @@ fn posixBind(t: *Threaded, socket_fd: posix.socket_t, addr: *const posix.sockadd |
| 2197 | .CANCELED => return error.Canceled, | 2197 | .CANCELED => return error.Canceled, |
| 2198 | | 2198 | |
| 2199 | .ADDRINUSE => return error.AddressInUse, | 2199 | .ADDRINUSE => return error.AddressInUse, |
| 2200 | .BADF => |err| return errnoBug(err), // always a race condition if this error is returned | 2200 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2201 | .INVAL => |err| return errnoBug(err), // invalid parameters | 2201 | .INVAL => |err| return errnoBug(err), // invalid parameters |
| 2202 | .NOTSOCK => |err| return errnoBug(err), // invalid `sockfd` | 2202 | .NOTSOCK => |err| return errnoBug(err), // invalid `sockfd` |
| 2203 | .AFNOSUPPORT => return error.AddressFamilyUnsupported, | 2203 | .AFNOSUPPORT => return error.AddressFamilyUnsupported, |
| ... | @@ -2221,7 +2221,7 @@ fn posixConnect(t: *Threaded, socket_fd: posix.socket_t, addr: *const posix.sock | ... | @@ -2221,7 +2221,7 @@ fn posixConnect(t: *Threaded, socket_fd: posix.socket_t, addr: *const posix.sock |
| 2221 | .AFNOSUPPORT => return error.AddressFamilyUnsupported, | 2221 | .AFNOSUPPORT => return error.AddressFamilyUnsupported, |
| 2222 | .AGAIN, .INPROGRESS => return error.WouldBlock, | 2222 | .AGAIN, .INPROGRESS => return error.WouldBlock, |
| 2223 | .ALREADY => return error.ConnectionPending, | 2223 | .ALREADY => return error.ConnectionPending, |
| 2224 | .BADF => |err| return errnoBug(err), | 2224 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2225 | .CONNREFUSED => return error.ConnectionRefused, | 2225 | .CONNREFUSED => return error.ConnectionRefused, |
| 2226 | .CONNRESET => return error.ConnectionResetByPeer, | 2226 | .CONNRESET => return error.ConnectionResetByPeer, |
| 2227 | .FAULT => |err| return errnoBug(err), | 2227 | .FAULT => |err| return errnoBug(err), |
| ... | @@ -2260,7 +2260,7 @@ fn posixConnectUnix(t: *Threaded, fd: posix.socket_t, addr: *const posix.sockadd | ... | @@ -2260,7 +2260,7 @@ fn posixConnectUnix(t: *Threaded, fd: posix.socket_t, addr: *const posix.sockadd |
| 2260 | .ROFS => return error.ReadOnlyFileSystem, | 2260 | .ROFS => return error.ReadOnlyFileSystem, |
| 2261 | .PERM => return error.PermissionDenied, | 2261 | .PERM => return error.PermissionDenied, |
| 2262 | | 2262 | |
| 2263 | .BADF => |err| return errnoBug(err), | 2263 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2264 | .CONNABORTED => |err| return errnoBug(err), | 2264 | .CONNABORTED => |err| return errnoBug(err), |
| 2265 | .FAULT => |err| return errnoBug(err), | 2265 | .FAULT => |err| return errnoBug(err), |
| 2266 | .ISCONN => |err| return errnoBug(err), | 2266 | .ISCONN => |err| return errnoBug(err), |
| ... | @@ -2279,7 +2279,7 @@ fn posixGetSockName(t: *Threaded, socket_fd: posix.fd_t, addr: *posix.sockaddr, | ... | @@ -2279,7 +2279,7 @@ fn posixGetSockName(t: *Threaded, socket_fd: posix.fd_t, addr: *posix.sockaddr, |
| 2279 | .INTR => continue, | 2279 | .INTR => continue, |
| 2280 | .CANCELED => return error.Canceled, | 2280 | .CANCELED => return error.Canceled, |
| 2281 | | 2281 | |
| 2282 | .BADF => |err| return errnoBug(err), // always a race condition | 2282 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2283 | .FAULT => |err| return errnoBug(err), | 2283 | .FAULT => |err| return errnoBug(err), |
| 2284 | .INVAL => |err| return errnoBug(err), // invalid parameters | 2284 | .INVAL => |err| return errnoBug(err), // invalid parameters |
| 2285 | .NOTSOCK => |err| return errnoBug(err), // always a race condition | 2285 | .NOTSOCK => |err| return errnoBug(err), // always a race condition |
| ... | @@ -2298,7 +2298,7 @@ fn setSocketOption(t: *Threaded, fd: posix.fd_t, level: i32, opt_name: u32, opti | ... | @@ -2298,7 +2298,7 @@ fn setSocketOption(t: *Threaded, fd: posix.fd_t, level: i32, opt_name: u32, opti |
| 2298 | .INTR => continue, | 2298 | .INTR => continue, |
| 2299 | .CANCELED => return error.Canceled, | 2299 | .CANCELED => return error.Canceled, |
| 2300 | | 2300 | |
| 2301 | .BADF => |err| return errnoBug(err), // always a race condition | 2301 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2302 | .NOTSOCK => |err| return errnoBug(err), // always a race condition | 2302 | .NOTSOCK => |err| return errnoBug(err), // always a race condition |
| 2303 | .INVAL => |err| return errnoBug(err), | 2303 | .INVAL => |err| return errnoBug(err), |
| 2304 | .FAULT => |err| return errnoBug(err), | 2304 | .FAULT => |err| return errnoBug(err), |
| ... | @@ -2430,6 +2430,7 @@ fn openSocketPosix( | ... | @@ -2430,6 +2430,7 @@ fn openSocketPosix( |
| 2430 | } | 2430 | } |
| 2431 | | 2431 | |
| 2432 | fn netAcceptPosix(userdata: ?*anyopaque, listen_fd: net.Socket.Handle) net.Server.AcceptError!net.Stream { | 2432 | fn netAcceptPosix(userdata: ?*anyopaque, listen_fd: net.Socket.Handle) net.Server.AcceptError!net.Stream { |
| | 2433 | if (!have_networking) return error.NetworkDown; |
| 2433 | const t: *Threaded = @ptrCast(@alignCast(userdata)); | 2434 | const t: *Threaded = @ptrCast(@alignCast(userdata)); |
| 2434 | var storage: PosixAddress = undefined; | 2435 | var storage: PosixAddress = undefined; |
| 2435 | var addr_len: posix.socklen_t = @sizeOf(PosixAddress); | 2436 | var addr_len: posix.socklen_t = @sizeOf(PosixAddress); |
| ... | @@ -2456,11 +2457,12 @@ fn netAcceptPosix(userdata: ?*anyopaque, listen_fd: net.Socket.Handle) net.Serve | ... | @@ -2456,11 +2457,12 @@ fn netAcceptPosix(userdata: ?*anyopaque, listen_fd: net.Socket.Handle) net.Serve |
| 2456 | }, | 2457 | }, |
| 2457 | .INTR => continue, | 2458 | .INTR => continue, |
| 2458 | .CANCELED => return error.Canceled, | 2459 | .CANCELED => return error.Canceled, |
| | 2460 | |
| 2459 | .AGAIN => |err| return errnoBug(err), | 2461 | .AGAIN => |err| return errnoBug(err), |
| 2460 | .BADF => |err| return errnoBug(err), // always a race condition | 2462 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2461 | .CONNABORTED => return error.ConnectionAborted, | 2463 | .CONNABORTED => return error.ConnectionAborted, |
| 2462 | .FAULT => |err| return errnoBug(err), | 2464 | .FAULT => |err| return errnoBug(err), |
| 2463 | .INVAL => return error.SocketNotListening, | 2465 | .INVAL => |err| return errnoBug(err), |
| 2464 | .NOTSOCK => |err| return errnoBug(err), | 2466 | .NOTSOCK => |err| return errnoBug(err), |
| 2465 | .MFILE => return error.ProcessFdQuotaExceeded, | 2467 | .MFILE => return error.ProcessFdQuotaExceeded, |
| 2466 | .NFILE => return error.SystemFdQuotaExceeded, | 2468 | .NFILE => return error.SystemFdQuotaExceeded, |
| ... | @@ -2504,7 +2506,7 @@ fn netReadPosix(userdata: ?*anyopaque, fd: net.Socket.Handle, data: [][]u8) net. | ... | @@ -2504,7 +2506,7 @@ fn netReadPosix(userdata: ?*anyopaque, fd: net.Socket.Handle, data: [][]u8) net. |
| 2504 | .INVAL => |err| return errnoBug(err), | 2506 | .INVAL => |err| return errnoBug(err), |
| 2505 | .FAULT => |err| return errnoBug(err), | 2507 | .FAULT => |err| return errnoBug(err), |
| 2506 | .AGAIN => |err| return errnoBug(err), | 2508 | .AGAIN => |err| return errnoBug(err), |
| 2507 | .BADF => |err| return errnoBug(err), | 2509 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2508 | .NOBUFS => return error.SystemResources, | 2510 | .NOBUFS => return error.SystemResources, |
| 2509 | .NOMEM => return error.SystemResources, | 2511 | .NOMEM => return error.SystemResources, |
| 2510 | .NOTCONN => return error.SocketUnconnected, | 2512 | .NOTCONN => return error.SocketUnconnected, |
| ... | @@ -2526,7 +2528,7 @@ fn netReadPosix(userdata: ?*anyopaque, fd: net.Socket.Handle, data: [][]u8) net. | ... | @@ -2526,7 +2528,7 @@ fn netReadPosix(userdata: ?*anyopaque, fd: net.Socket.Handle, data: [][]u8) net. |
| 2526 | .INVAL => |err| return errnoBug(err), | 2528 | .INVAL => |err| return errnoBug(err), |
| 2527 | .FAULT => |err| return errnoBug(err), | 2529 | .FAULT => |err| return errnoBug(err), |
| 2528 | .AGAIN => |err| return errnoBug(err), | 2530 | .AGAIN => |err| return errnoBug(err), |
| 2529 | .BADF => |err| return errnoBug(err), // Always a race condition. | 2531 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2530 | .NOBUFS => return error.SystemResources, | 2532 | .NOBUFS => return error.SystemResources, |
| 2531 | .NOMEM => return error.SystemResources, | 2533 | .NOMEM => return error.SystemResources, |
| 2532 | .NOTCONN => return error.SocketUnconnected, | 2534 | .NOTCONN => return error.SocketUnconnected, |
| ... | @@ -2625,7 +2627,7 @@ fn netSendOne( | ... | @@ -2625,7 +2627,7 @@ fn netSendOne( |
| 2625 | | 2627 | |
| 2626 | .ACCES => return error.AccessDenied, | 2628 | .ACCES => return error.AccessDenied, |
| 2627 | .ALREADY => return error.FastOpenAlreadyInProgress, | 2629 | .ALREADY => return error.FastOpenAlreadyInProgress, |
| 2628 | .BADF => |err| return errnoBug(err), | 2630 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2629 | .CONNRESET => return error.ConnectionResetByPeer, | 2631 | .CONNRESET => return error.ConnectionResetByPeer, |
| 2630 | .DESTADDRREQ => |err| return errnoBug(err), | 2632 | .DESTADDRREQ => |err| return errnoBug(err), |
| 2631 | .FAULT => |err| return errnoBug(err), | 2633 | .FAULT => |err| return errnoBug(err), |
| ... | @@ -2694,7 +2696,7 @@ fn netSendMany( | ... | @@ -2694,7 +2696,7 @@ fn netSendMany( |
| 2694 | | 2696 | |
| 2695 | .AGAIN => |err| return errnoBug(err), | 2697 | .AGAIN => |err| return errnoBug(err), |
| 2696 | .ALREADY => return error.FastOpenAlreadyInProgress, | 2698 | .ALREADY => return error.FastOpenAlreadyInProgress, |
| 2697 | .BADF => |err| return errnoBug(err), // Always a race condition. | 2699 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2698 | .CONNRESET => return error.ConnectionResetByPeer, | 2700 | .CONNRESET => return error.ConnectionResetByPeer, |
| 2699 | .DESTADDRREQ => |err| return errnoBug(err), // The socket is not connection-mode, and no peer address is set. | 2701 | .DESTADDRREQ => |err| return errnoBug(err), // The socket is not connection-mode, and no peer address is set. |
| 2700 | .FAULT => |err| return errnoBug(err), // An invalid user space address was specified for an argument. | 2702 | .FAULT => |err| return errnoBug(err), // An invalid user space address was specified for an argument. |
| ... | @@ -2905,7 +2907,7 @@ fn netWritePosix( | ... | @@ -2905,7 +2907,7 @@ fn netWritePosix( |
| 2905 | .ACCES => |err| return errnoBug(err), | 2907 | .ACCES => |err| return errnoBug(err), |
| 2906 | .AGAIN => |err| return errnoBug(err), | 2908 | .AGAIN => |err| return errnoBug(err), |
| 2907 | .ALREADY => return error.FastOpenAlreadyInProgress, | 2909 | .ALREADY => return error.FastOpenAlreadyInProgress, |
| 2908 | .BADF => |err| return errnoBug(err), // always a race condition | 2910 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2909 | .CONNRESET => return error.ConnectionResetByPeer, | 2911 | .CONNRESET => return error.ConnectionResetByPeer, |
| 2910 | .DESTADDRREQ => |err| return errnoBug(err), // The socket is not connection-mode, and no peer address is set. | 2912 | .DESTADDRREQ => |err| return errnoBug(err), // The socket is not connection-mode, and no peer address is set. |
| 2911 | .FAULT => |err| return errnoBug(err), // An invalid user space address was specified for an argument. | 2913 | .FAULT => |err| return errnoBug(err), // An invalid user space address was specified for an argument. |
| ... | @@ -2979,7 +2981,7 @@ fn netInterfaceNameResolve( | ... | @@ -2979,7 +2981,7 @@ fn netInterfaceNameResolve( |
| 2979 | .INVAL => |err| return errnoBug(err), // Bad parameters. | 2981 | .INVAL => |err| return errnoBug(err), // Bad parameters. |
| 2980 | .NOTTY => |err| return errnoBug(err), | 2982 | .NOTTY => |err| return errnoBug(err), |
| 2981 | .NXIO => |err| return errnoBug(err), | 2983 | .NXIO => |err| return errnoBug(err), |
| 2982 | .BADF => |err| return errnoBug(err), // Always a race condition. | 2984 | .BADF => |err| return errnoBug(err), // File descriptor used after closed. |
| 2983 | .FAULT => |err| return errnoBug(err), // Bad pointer parameter. | 2985 | .FAULT => |err| return errnoBug(err), // Bad pointer parameter. |
| 2984 | .IO => |err| return errnoBug(err), // sock_fd is not a file descriptor | 2986 | .IO => |err| return errnoBug(err), // sock_fd is not a file descriptor |
| 2985 | .NODEV => return error.InterfaceNotFound, | 2987 | .NODEV => return error.InterfaceNotFound, |