]> Cypherpunks repositories - gostls13.git/commitdiff
net: make WriteMsg{IP,UDP,Unix} return the correct number of bytes transferred
authorMikio Hara <mikioh.mikioh@gmail.com>
Fri, 25 Apr 2014 21:52:37 +0000 (06:52 +0900)
committerMikio Hara <mikioh.mikioh@gmail.com>
Fri, 25 Apr 2014 21:52:37 +0000 (06:52 +0900)
Fixes #7645

LGTM=iant, bradfitz
R=iant, bradfitz
CC=golang-codereviews
https://golang.org/cl/90170046

src/pkg/net/fd_unix.go

index dbfbf2bd5c873ddebae9c224788bf5f979e916d2..5ed0d3ac5aab27676185e91589039f1a69518d02 100644 (file)
@@ -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}