mirror of
https://github.com/golang/go
synced 2024-11-21 22:14:41 -07:00
net, syscall: return source address in Recvmsg
R=rsc CC=golang-dev https://golang.org/cl/3766042
This commit is contained in:
parent
655da99627
commit
3a97119517
@ -417,7 +417,7 @@ func (fd *netFD) ReadMsg(p []byte, oob []byte) (n, oobn, flags int, sa syscall.S
|
||||
var oserr os.Error
|
||||
for {
|
||||
var errno int
|
||||
n, oobn, flags, errno = syscall.Recvmsg(fd.sysfd, p, oob, sa, 0)
|
||||
n, oobn, flags, sa, errno = syscall.Recvmsg(fd.sysfd, p, oob, 0)
|
||||
if errno == syscall.EAGAIN && fd.rdeadline >= 0 {
|
||||
pollserver.WaitRead(fd)
|
||||
continue
|
||||
|
@ -485,8 +485,8 @@ func Futimes(fd int, tv []Timeval) (errno int) {
|
||||
|
||||
//sys fcntl(fd int, cmd int, arg int) (val int, errno int)
|
||||
|
||||
func Recvmsg(fd int, p, oob []byte, from Sockaddr, flags int) (n, oobn int, recvflags int, errno int) {
|
||||
return 0, 0, 0, EAFNOSUPPORT
|
||||
func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, errno int) {
|
||||
return 0, 0, 0, nil, EAFNOSUPPORT
|
||||
}
|
||||
|
||||
func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (errno int) {
|
||||
|
@ -450,7 +450,7 @@ func Sendto(fd int, p []byte, flags int, to Sockaddr) (errno int) {
|
||||
return sendto(fd, p, flags, ptr, n)
|
||||
}
|
||||
|
||||
func Recvmsg(fd int, p, oob []byte, from Sockaddr, flags int) (n, oobn int, recvflags int, errno int) {
|
||||
func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, errno int) {
|
||||
var msg Msghdr
|
||||
var rsa RawSockaddrAny
|
||||
msg.Name = (*byte)(unsafe.Pointer(&rsa))
|
||||
@ -477,6 +477,10 @@ func Recvmsg(fd int, p, oob []byte, from Sockaddr, flags int) (n, oobn int, recv
|
||||
}
|
||||
oobn = int(msg.Controllen)
|
||||
recvflags = int(msg.Flags)
|
||||
// source address is only specified if the socket is unconnected
|
||||
if rsa.Addr.Family != 0 {
|
||||
from, errno = anyToSockaddr(&rsa)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user