]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: unify unix Recvmsg epilogues
authorJosh Bleecher Snyder <josharian@gmail.com>
Tue, 2 Nov 2021 19:25:23 +0000 (12:25 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Thu, 4 Nov 2021 00:15:44 +0000 (00:15 +0000)
These were identical. This is a preliminary step
towards remove allocs per UDP receive.

Change-Id: I83106cd3f1fe4bc5bae2d1b0ebd23eedd820abed
Reviewed-on: https://go-review.googlesource.com/c/go/+/361258
Trust: Josh Bleecher Snyder <josharian@gmail.com>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/syscall/syscall_aix.go
src/syscall/syscall_bsd.go
src/syscall/syscall_linux.go
src/syscall/syscall_solaris.go
src/syscall/syscall_unix.go

index 36172cc678f72e33f674640bd5b8007e073750de..0f5101999ff9687d8ed71e9339cb835ee9f3206f 100644 (file)
@@ -321,10 +321,9 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
        return
 }
 
-func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {
        var msg Msghdr
-       var rsa RawSockaddrAny
-       msg.Name = (*byte)(unsafe.Pointer(&rsa))
+       msg.Name = (*byte)(unsafe.Pointer(rsa))
        msg.Namelen = uint32(SizeofSockaddrAny)
        var iov Iovec
        if len(p) > 0 {
@@ -353,10 +352,6 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
        }
        oobn = int(msg.Controllen)
        recvflags = int(msg.Flags)
-       // source address is only specified if the socket is unconnected
-       if rsa.Addr.Family != AF_UNSPEC {
-               from, err = anyToSockaddr(&rsa)
-       }
        return
 }
 
index 71a331d6c0bddc81a649e3891ee756942fd6c371..5e636d5258046296d17ecdedd347a904631de3d3 100644 (file)
@@ -358,10 +358,9 @@ func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
 //sys   sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
 //sys  recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
 
-func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {
        var msg Msghdr
-       var rsa RawSockaddrAny
-       msg.Name = (*byte)(unsafe.Pointer(&rsa))
+       msg.Name = (*byte)(unsafe.Pointer(rsa))
        msg.Namelen = uint32(SizeofSockaddrAny)
        var iov Iovec
        if len(p) > 0 {
@@ -385,10 +384,6 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
        }
        oobn = int(msg.Controllen)
        recvflags = int(msg.Flags)
-       // source address is only specified if the socket is unconnected
-       if rsa.Addr.Family != AF_UNSPEC {
-               from, err = anyToSockaddr(&rsa)
-       }
        return
 }
 
index 695ce2b19866feac35d90318afc1076339c85b59..c0022996412665fea08ad66939edd5ee5a008346 100644 (file)
@@ -638,10 +638,9 @@ func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
        return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
 }
 
-func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {
        var msg Msghdr
-       var rsa RawSockaddrAny
-       msg.Name = (*byte)(unsafe.Pointer(&rsa))
+       msg.Name = (*byte)(unsafe.Pointer(rsa))
        msg.Namelen = uint32(SizeofSockaddrAny)
        var iov Iovec
        if len(p) > 0 {
@@ -672,10 +671,6 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
        }
        oobn = int(msg.Controllen)
        recvflags = int(msg.Flags)
-       // source address is only specified if the socket is unconnected
-       if rsa.Addr.Family != AF_UNSPEC {
-               from, err = anyToSockaddr(&rsa)
-       }
        return
 }
 
index 15b3c2bb40747c23724134d4dfbfc94167a03ff0..5f12f229c4c78622d078a3afc66c0b80fc53841e 100644 (file)
@@ -332,10 +332,9 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
        return
 }
 
-func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {
        var msg Msghdr
-       var rsa RawSockaddrAny
-       msg.Name = (*byte)(unsafe.Pointer(&rsa))
+       msg.Name = (*byte)(unsafe.Pointer(rsa))
        msg.Namelen = uint32(SizeofSockaddrAny)
        var iov Iovec
        if len(p) > 0 {
@@ -358,10 +357,6 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
                return
        }
        oobn = int(msg.Accrightslen)
-       // source address is only specified if the socket is unconnected
-       if rsa.Addr.Family != AF_UNSPEC {
-               from, err = anyToSockaddr(&rsa)
-       }
        return
 }
 
index 2837c976e319d42c56899bc59527ab890597f4fa..d1ecc361c6aa2d6e22de09967cfaccabbfa02528 100644 (file)
@@ -324,6 +324,16 @@ func recvfromInet6(fd int, p []byte, flags int, from *SockaddrInet6) (n int, err
        return
 }
 
+func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       n, oobn, recvflags, err = recvmsgRaw(fd, p, oob, flags, &rsa)
+       // source address is only specified if the socket is unconnected
+       if rsa.Addr.Family != AF_UNSPEC {
+               from, err = anyToSockaddr(&rsa)
+       }
+       return
+}
+
 func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {
        _, err = SendmsgN(fd, p, oob, to, flags)
        return