Commit e419ab64 authored by Mikio Hara's avatar Mikio Hara

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
parent 9144d875
...@@ -375,7 +375,7 @@ func (fd *netFD) writeMsg(p []byte, oob []byte, sa syscall.Sockaddr) (n int, oob ...@@ -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} return 0, 0, &OpError{"write", fd.net, fd.raddr, err}
} }
for { 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 == syscall.EAGAIN {
if err = fd.pd.WaitWrite(); err == nil { if err = fd.pd.WaitWrite(); err == nil {
continue continue
...@@ -384,7 +384,6 @@ func (fd *netFD) writeMsg(p []byte, oob []byte, sa syscall.Sockaddr) (n int, oob ...@@ -384,7 +384,6 @@ func (fd *netFD) writeMsg(p []byte, oob []byte, sa syscall.Sockaddr) (n int, oob
break break
} }
if err == nil { if err == nil {
n = len(p)
oobn = len(oob) oobn = len(oob)
} else { } else {
err = &OpError{"write", fd.net, fd.raddr, err} err = &OpError{"write", fd.net, fd.raddr, err}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment