syscall: handle empty address in ReadFrom better

Handle return values from recvfrom correctly when the
kernel decides to not return an address.

Fixes #4636.
Fixes #4352.

R=rsc, mikioh.mikioh, dave
CC=golang-dev
https://golang.org/cl/7058062
This commit is contained in:
Jeff R. Allen 2013-01-30 10:02:01 -08:00 committed by Russ Cox
parent fb451490ec
commit 6563d8623d
4 changed files with 138 additions and 7 deletions

View file

@ -450,7 +450,9 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {
if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {
return
}
from, err = anyToSockaddr(&rsa)
if rsa.Addr.Family != AF_UNSPEC {
from, err = anyToSockaddr(&rsa)
}
return
}