diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index 101a2a339f07752dd069a71388e161918ee4811e..601f3a79b971270dda69a4efc2b664236fc2e674 100644 --- a/lib/std/os/windows.zig +++ b/lib/std/os/windows.zig @@ -692,6 +692,16 @@ pub fn WSASocketW( return rc; } +pub fn closesocket(s: ws2_32.SOCKET) !void { + switch (ws2_32.closesocket(s)) { + 0 => {}, + ws2_32.SOCKET_ERROR => switch (ws2_32.WSAGetLastError()) { + else => |err| return unexpectedWSAError(err), + }, + else => unreachable, + } +} + pub fn WSAIoctl( s: ws2_32.SOCKET, dwIoControlCode: DWORD, diff --git a/lib/std/os/windows/ws2_32.zig b/lib/std/os/windows/ws2_32.zig index 0554f09705e611096cbb92c3cf2c81167546876c..faaaedd4431a67b4082386dc53dbe35083bef849 100644 --- a/lib/std/os/windows/ws2_32.zig +++ b/lib/std/os/windows/ws2_32.zig @@ -240,6 +240,7 @@ pub extern "ws2_32" stdcallcc fn WSASocketW( g: GROUP, dwFlags: DWORD, ) SOCKET; +pub extern "ws2_32" stdcallcc fn closesocket(s: SOCKET) c_int; pub extern "ws2_32" stdcallcc fn WSAIoctl( s: SOCKET, dwIoControlCode: DWORD,