From: Mikio Hara Date: Fri, 25 Apr 2014 21:52:37 +0000 (+0900) Subject: net: make WriteMsg{IP,UDP,Unix} return the correct number of bytes transferred X-Git-Tag: go1.3beta2~192 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e419ab6452a9973025f95d3a9702abe1c7a6df04;p=gostls13.git net: make WriteMsg{IP,UDP,Unix} return the correct number of bytes transferred Fixes #7645 LGTM=iant, bradfitz R=iant, bradfitz CC=golang-codereviews https://golang.org/cl/90170046 --- diff --git a/src/pkg/net/fd_unix.go b/src/pkg/net/fd_unix.go index dbfbf2bd5c..5ed0d3ac5a 100644 --- a/src/pkg/net/fd_unix.go +++ b/src/pkg/net/fd_unix.go @@ -375,7 +375,7 @@ func (fd *netFD) writeMsg(p []byte, oob []byte, sa syscall.Sockaddr) (n int, oob return 0, 0, &OpError{"write", fd.net, fd.raddr, err} } for { - err = syscall.Sendmsg(fd.sysfd, p, oob, sa, 0) + n, err = syscall.SendmsgN(fd.sysfd, p, oob, sa, 0) if err == syscall.EAGAIN { if err = fd.pd.WaitWrite(); err == nil { continue @@ -384,7 +384,6 @@ func (fd *netFD) writeMsg(p []byte, oob []byte, sa syscall.Sockaddr) (n int, oob break } if err == nil { - n = len(p) oobn = len(oob) } else { err = &OpError{"write", fd.net, fd.raddr, err}