aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2020-11-22 10:29:45 +0100
committerLemonBoy <thatlemon@gmail.com>2021-01-11 21:43:15 +0100
commit34720da3d0a4a98383639cbedcbe1aa885217ed6 (patch)
tree183937da172d8cacda17a88df9a479bf4f2403ee
parentd0beb4badb9064893133c996b05c0748317adf24 (diff)
downloadzig-34720da3d0a4a98383639cbedcbe1aa885217ed6.tar.gz
zig-34720da3d0a4a98383639cbedcbe1aa885217ed6.zip
Apparently unix sockets are supported on Windows
Starting from Windows 10 build 17063.
-rw-r--r--lib/std/net.zig6
-rw-r--r--lib/std/net/test.zig9
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/std/net.zig b/lib/std/net.zig
index 41da4a2c46..6fe2d1cd08 100644
--- 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
index 12eb7c6cb2..10a9c4e18b 100644
--- 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();