commit 34720da3d0a4a98383639cbedcbe1aa885217ed6 (tree)
parent d0beb4badb9064893133c996b05c0748317adf24
Author: LemonBoy <thatlemon@gmail.com>
Date: Sun, 22 Nov 2020 10:29:45 +0100
Apparently unix sockets are supported on Windows
Starting from Windows 10 build 17063.
Diffstat:
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/lib/std/net.zig b/lib/std/net.zig
@@ -12,7 +12,11 @@ const os = std.os;
const fs = std.fs;
const io = std.io;
-pub const has_unix_sockets = @hasDecl(os, "sockaddr_un");
+// Windows 10 added support for unix sockets in build 17063, redstone 4 is the
+// first release to support them.
+pub const has_unix_sockets = @hasDecl(os, "sockaddr_un") and
+ (builtin.os.tag != .windows or
+ std.Target.current.os.version_range.windows.isAtLeast(.win10_rs4) orelse false);
pub const Address = extern union {
any: os.sockaddr,
diff --git a/lib/std/net/test.zig b/lib/std/net/test.zig
@@ -258,6 +258,15 @@ test "listen on a unix socket, send bytes, receive bytes" {
if (builtin.single_threaded) return error.SkipZigTest;
if (!net.has_unix_sockets) return error.SkipZigTest;
+ if (std.builtin.os.tag == .windows) {
+ _ = try std.os.windows.WSAStartup(2, 2);
+ }
+ defer {
+ if (std.builtin.os.tag == .windows) {
+ std.os.windows.WSACleanup() catch unreachable;
+ }
+ }
+
var server = net.StreamServer.init(.{});
defer server.deinit();