authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-03-11 19:29:10-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-03-12 15:41:00-07:00
log9634e983578f2c8a948228d14135b4640e3a8587
treec6d0288e4a4d2e73e630226d1d7a589bec69cfcd
parenta50458777b937805f8e8467cc1c2dad6516bb027

std.Io.Threaded: fix missing calls to syscall.finish()


1 files changed, 25 insertions(+), 11 deletions(-)

lib/std/Io/Threaded.zig+25-11
......@@ -11846,7 +11846,10 @@ fn netListenUnixWindows(
1184611846 var syscall: AlertableSyscall = try .start();
1184711847 while (true) {
1184811848 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 }
1185011853 switch (ws2_32.WSAGetLastError()) {
1185111854 .NOTINITIALISED => {
1185211855 syscall.finish();
......@@ -11869,15 +11872,18 @@ fn netListenUnixWindows(
1186911872 }
1187011873 }
1187111874
11875 syscall = try .start();
1187211876 while (true) {
11873 try syscall.checkCancel();
1187411877 const rc = ws2_32.listen(socket_handle, options.kernel_backlog);
1187511878 if (rc != ws2_32.SOCKET_ERROR) {
1187611879 syscall.finish();
1187711880 return socket_handle;
1187811881 }
1187911882 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 },
1188111887 .NOTINITIALISED => {
1188211888 syscall.finish();
1188311889 try initializeWsa(t);
......@@ -12160,9 +12166,12 @@ fn setSocketOption(fd: posix.fd_t, level: i32, opt_name: u32, option: u32) !void
1216012166fn setSocketOptionWsa(t: *Threaded, socket: Io.net.Socket.Handle, level: i32, opt_name: u32, option: u32) !void {
1216112167 const o: []const u8 = @ptrCast(&option);
1216212168 var syscall: AlertableSyscall = try .start();
12163 const rc = ws2_32.setsockopt(socket, level, @bitCast(opt_name), o.ptr, @intCast(o.len));
1216412169 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 }
1216612175 switch (ws2_32.WSAGetLastError()) {
1216712176 .EINTR, .ECANCELLED, .E_CANCELLED, .OPERATION_ABORTED => {
1216812177 try syscall.checkCancel();
......@@ -12175,7 +12184,9 @@ fn setSocketOptionWsa(t: *Threaded, socket: Io.net.Socket.Handle, level: i32, op
1217512184 continue;
1217612185 },
1217712186 .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),
1217912190 else => |err| return syscall.unexpectedWsaError(err),
1218012191 }
1218112192 }
......@@ -12313,7 +12324,10 @@ fn netConnectUnixWindows(
1231312324 var syscall: AlertableSyscall = try .start();
1231412325 while (true) {
1231512326 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 }
1231712331 switch (ws2_32.WSAGetLastError()) {
1231812332 .EINTR, .ECANCELLED, .E_CANCELLED, .OPERATION_ABORTED => {
1231912333 try syscall.checkCancel();
......@@ -12326,14 +12340,14 @@ fn netConnectUnixWindows(
1232612340 continue;
1232712341 },
1232812342 .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),
1233312343 .EWOULDBLOCK => return syscall.fail(error.WouldBlock),
1233412344 .EACCES => return syscall.fail(error.AccessDenied),
1233512345 .ENOBUFS => return syscall.fail(error.SystemResources),
1233612346 .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),
1233712351 else => |err| return syscall.unexpectedWsaError(err),
1233812352 }
1233912353 }