]> Cypherpunks repositories - gostls13.git/commitdiff
fix abstract unix domain sockets
authorRob Pike <r@golang.org>
Thu, 14 May 2009 22:20:30 +0000 (15:20 -0700)
committerRob Pike <r@golang.org>
Thu, 14 May 2009 22:20:30 +0000 (15:20 -0700)
R=rsc
DELTA=5  (3 added, 0 deleted, 2 changed)
OCL=28845
CL=28849

src/lib/net/net_linux.go
src/lib/syscall/socket_linux.go
src/lib/syscall/types_amd64_linux.go

index 90d6c245bd379466e9f907e8a7ce58dfda53582b..4127867430af63e58a731e155d0fc5847dfa1994 100644 (file)
@@ -95,6 +95,7 @@ func unixToSockaddr(name string) (sa1 *syscall.Sockaddr, err os.Error) {
        if sa.Path[0] == '@' {
                sa.Path[0] = 0;
        }
+       sa.Length = 1 + int64(n) + 1;   // family, name, \0
 
        return (*syscall.Sockaddr)(unsafe.Pointer(sa)), nil;
 }
index 5fb3c9a9c2d2e425aab3ccc98ae504fc1dc9f4dd..f08fcca7ba22d4eb8d50c35c5f94d7d344ac210b 100644 (file)
@@ -19,7 +19,8 @@ var SocketDisableIPv6 bool
 func saLen(s *Sockaddr) int64 {
        switch s.Family {
        case AF_UNIX:
-               return SizeofSockaddrUnix;
+               sa := (*SockaddrUnix)(unsafe.Pointer(s));
+               return sa.Length;
        case AF_INET:
                return SizeofSockaddrInet4;
        case AF_INET6:
index cbb65eeab06ddbba99f91edd1a42b1aafe7c3843..58ffec00f8acd4eab230834df36078261d6242e7 100644 (file)
@@ -166,7 +166,8 @@ const (
 
 type SockaddrUnix struct {
        Family  uint16;
-       Path    [108]byte
+       Path    [108]byte;
+       Length  int64;  // Not part of the kernel structure; used internally
 }
 const SizeofSockaddrUnix = 110