| ... | @@ -11846,7 +11846,10 @@ fn netListenUnixWindows( | ... | @@ -11846,7 +11846,10 @@ fn netListenUnixWindows( |
| 11846 | var syscall: AlertableSyscall = try .start(); | 11846 | var syscall: AlertableSyscall = try .start(); |
| 11847 | while (true) { | 11847 | while (true) { |
| 11848 | const rc = ws2_32.bind(socket_handle, &storage.any, addr_len); | 11848 | const rc = ws2_32.bind(socket_handle, &storage.any, addr_len); |
| 11849 | if (rc != ws2_32.SOCKET_ERROR) break; | 11849 | if (rc != ws2_32.SOCKET_ERROR) { |
| | 11850 | syscall.finish(); |
| | 11851 | break; |
| | 11852 | } |
| 11850 | switch (ws2_32.WSAGetLastError()) { | 11853 | switch (ws2_32.WSAGetLastError()) { |
| 11851 | .NOTINITIALISED => { | 11854 | .NOTINITIALISED => { |
| 11852 | syscall.finish(); | 11855 | syscall.finish(); |
| ... | @@ -11869,15 +11872,18 @@ fn netListenUnixWindows( | ... | @@ -11869,15 +11872,18 @@ fn netListenUnixWindows( |
| 11869 | } | 11872 | } |
| 11870 | } | 11873 | } |
| 11871 | | 11874 | |
| | 11875 | syscall = try .start(); |
| 11872 | while (true) { | 11876 | while (true) { |
| 11873 | try syscall.checkCancel(); | | |
| 11874 | const rc = ws2_32.listen(socket_handle, options.kernel_backlog); | 11877 | const rc = ws2_32.listen(socket_handle, options.kernel_backlog); |
| 11875 | if (rc != ws2_32.SOCKET_ERROR) { | 11878 | if (rc != ws2_32.SOCKET_ERROR) { |
| 11876 | syscall.finish(); | 11879 | syscall.finish(); |
| 11877 | return socket_handle; | 11880 | return socket_handle; |
| 11878 | } | 11881 | } |
| 11879 | switch (ws2_32.WSAGetLastError()) { | 11882 | switch (ws2_32.WSAGetLastError()) { |
| 11880 | .EINTR, .ECANCELLED, .E_CANCELLED, .OPERATION_ABORTED => continue, | 11883 | .EINTR, .ECANCELLED, .E_CANCELLED, .OPERATION_ABORTED => { |
| | 11884 | try syscall.checkCancel(); |
| | 11885 | continue; |
| | 11886 | }, |
| 11881 | .NOTINITIALISED => { | 11887 | .NOTINITIALISED => { |
| 11882 | syscall.finish(); | 11888 | syscall.finish(); |
| 11883 | try initializeWsa(t); | 11889 | try initializeWsa(t); |
| ... | @@ -12160,9 +12166,12 @@ fn setSocketOption(fd: posix.fd_t, level: i32, opt_name: u32, option: u32) !void | ... | @@ -12160,9 +12166,12 @@ fn setSocketOption(fd: posix.fd_t, level: i32, opt_name: u32, option: u32) !void |
| 12160 | fn setSocketOptionWsa(t: *Threaded, socket: Io.net.Socket.Handle, level: i32, opt_name: u32, option: u32) !void { | 12166 | fn setSocketOptionWsa(t: *Threaded, socket: Io.net.Socket.Handle, level: i32, opt_name: u32, option: u32) !void { |
| 12161 | const o: []const u8 = @ptrCast(&option); | 12167 | const o: []const u8 = @ptrCast(&option); |
| 12162 | var syscall: AlertableSyscall = try .start(); | 12168 | var syscall: AlertableSyscall = try .start(); |
| 12163 | const rc = ws2_32.setsockopt(socket, level, @bitCast(opt_name), o.ptr, @intCast(o.len)); | | |
| 12164 | while (true) { | 12169 | while (true) { |
| 12165 | if (rc != ws2_32.SOCKET_ERROR) return syscall.finish(); | 12170 | const rc = ws2_32.setsockopt(socket, level, @bitCast(opt_name), o.ptr, @intCast(o.len)); |
| | 12171 | if (rc != ws2_32.SOCKET_ERROR) { |
| | 12172 | syscall.finish(); |
| | 12173 | return; |
| | 12174 | } |
| 12166 | switch (ws2_32.WSAGetLastError()) { | 12175 | switch (ws2_32.WSAGetLastError()) { |
| 12167 | .EINTR, .ECANCELLED, .E_CANCELLED, .OPERATION_ABORTED => { | 12176 | .EINTR, .ECANCELLED, .E_CANCELLED, .OPERATION_ABORTED => { |
| 12168 | try syscall.checkCancel(); | 12177 | try syscall.checkCancel(); |
| ... | @@ -12175,7 +12184,9 @@ fn setSocketOptionWsa(t: *Threaded, socket: Io.net.Socket.Handle, level: i32, op | ... | @@ -12175,7 +12184,9 @@ fn setSocketOptionWsa(t: *Threaded, socket: Io.net.Socket.Handle, level: i32, op |
| 12175 | continue; | 12184 | continue; |
| 12176 | }, | 12185 | }, |
| 12177 | .ENETDOWN => return syscall.fail(error.NetworkDown), | 12186 | .ENETDOWN => return syscall.fail(error.NetworkDown), |
| 12178 | .EFAULT, .ENOTSOCK, .EINVAL => |err| return syscall.wsaErrorBug(err), | 12187 | .EFAULT => |err| return syscall.wsaErrorBug(err), |
| | 12188 | .ENOTSOCK => |err| return syscall.wsaErrorBug(err), |
| | 12189 | .EINVAL => |err| return syscall.wsaErrorBug(err), |
| 12179 | else => |err| return syscall.unexpectedWsaError(err), | 12190 | else => |err| return syscall.unexpectedWsaError(err), |
| 12180 | } | 12191 | } |
| 12181 | } | 12192 | } |
| ... | @@ -12313,7 +12324,10 @@ fn netConnectUnixWindows( | ... | @@ -12313,7 +12324,10 @@ fn netConnectUnixWindows( |
| 12313 | var syscall: AlertableSyscall = try .start(); | 12324 | var syscall: AlertableSyscall = try .start(); |
| 12314 | while (true) { | 12325 | while (true) { |
| 12315 | const rc = ws2_32.connect(socket_handle, &storage.any, addr_len); | 12326 | const rc = ws2_32.connect(socket_handle, &storage.any, addr_len); |
| 12316 | if (rc != ws2_32.SOCKET_ERROR) break; | 12327 | if (rc != ws2_32.SOCKET_ERROR) { |
| | 12328 | syscall.finish(); |
| | 12329 | break; |
| | 12330 | } |
| 12317 | switch (ws2_32.WSAGetLastError()) { | 12331 | switch (ws2_32.WSAGetLastError()) { |
| 12318 | .EINTR, .ECANCELLED, .E_CANCELLED, .OPERATION_ABORTED => { | 12332 | .EINTR, .ECANCELLED, .E_CANCELLED, .OPERATION_ABORTED => { |
| 12319 | try syscall.checkCancel(); | 12333 | try syscall.checkCancel(); |
| ... | @@ -12326,14 +12340,14 @@ fn netConnectUnixWindows( | ... | @@ -12326,14 +12340,14 @@ fn netConnectUnixWindows( |
| 12326 | continue; | 12340 | continue; |
| 12327 | }, | 12341 | }, |
| 12328 | .ECONNREFUSED => return syscall.fail(error.FileNotFound), | 12342 | .ECONNREFUSED => return syscall.fail(error.FileNotFound), |
| 12329 | .EFAULT => |err| return syscall.wsaErrorBug(err), | | |
| 12330 | .EINVAL => |err| return syscall.wsaErrorBug(err), | | |
| 12331 | .EISCONN => |err| return syscall.wsaErrorBug(err), | | |
| 12332 | .ENOTSOCK => |err| return syscall.wsaErrorBug(err), | | |
| 12333 | .EWOULDBLOCK => return syscall.fail(error.WouldBlock), | 12343 | .EWOULDBLOCK => return syscall.fail(error.WouldBlock), |
| 12334 | .EACCES => return syscall.fail(error.AccessDenied), | 12344 | .EACCES => return syscall.fail(error.AccessDenied), |
| 12335 | .ENOBUFS => return syscall.fail(error.SystemResources), | 12345 | .ENOBUFS => return syscall.fail(error.SystemResources), |
| 12336 | .EAFNOSUPPORT => return syscall.fail(error.AddressFamilyUnsupported), | 12346 | .EAFNOSUPPORT => return syscall.fail(error.AddressFamilyUnsupported), |
| | 12347 | .EFAULT => |err| return syscall.wsaErrorBug(err), |
| | 12348 | .EINVAL => |err| return syscall.wsaErrorBug(err), |
| | 12349 | .EISCONN => |err| return syscall.wsaErrorBug(err), |
| | 12350 | .ENOTSOCK => |err| return syscall.wsaErrorBug(err), |
| 12337 | else => |err| return syscall.unexpectedWsaError(err), | 12351 | else => |err| return syscall.unexpectedWsaError(err), |
| 12338 | } | 12352 | } |
| 12339 | } | 12353 | } |