From a2a06d43f239933f0961ee903a167ae149b02606 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sat, 15 Sep 2018 17:54:58 +0200 Subject: Fix connectUnix/bindUnix with abstract socket paths The only way to make this work for both abstract and non-abstract sockets is to send the kernel an incomplete structure. Reported by Epictek on the forum. --- lib/pure/net.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/pure') diff --git a/lib/pure/net.nim b/lib/pure/net.nim index a60137dab..67cb95e2f 100644 --- a/lib/pure/net.nim +++ b/lib/pure/net.nim @@ -964,7 +964,7 @@ when defined(posix) or defined(nimdoc): when not defined(nimdoc): var socketAddr = makeUnixAddr(path) if socket.fd.connect(cast[ptr SockAddr](addr socketAddr), - sizeof(socketAddr).Socklen) != 0'i32: + (sizeof(socketAddr.sun_family) + path.len).Socklen) != 0'i32: raiseOSError(osLastError()) proc bindUnix*(socket: Socket, path: string) = @@ -973,7 +973,7 @@ when defined(posix) or defined(nimdoc): when not defined(nimdoc): var socketAddr = makeUnixAddr(path) if socket.fd.bindAddr(cast[ptr SockAddr](addr socketAddr), - sizeof(socketAddr).Socklen) != 0'i32: + (sizeof(socketAddr.sun_family) + path.len).Socklen) != 0'i32: raiseOSError(osLastError()) when defined(ssl): -- cgit 1.4.1-2-gfad0