mirror of
https://github.com/golang/go
synced 2024-11-23 17:30:02 -07:00
internal/poll: handle zero-byte write in FD.WriteTo
Zero-byte write was fixed by CL 132781, that was submitted 3 days ago. But I just submitted CL 129137, and the CL broken zero-byte write functionality without me noticing. CL 129137 was based on old commit (older than 3 days ago), and try-bots did not discover the breakage. Fix zero-byte write again. Fixes windows build. Change-Id: Ib403b25fd25cb881963f25706eecca92b924aaa1 Reviewed-on: https://go-review.googlesource.com/134275 Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
This commit is contained in:
parent
bbf9e6db0a
commit
1705962cf9
@ -811,6 +811,17 @@ func (fd *FD) WriteTo(buf []byte, sa syscall.Sockaddr) (int, error) {
|
|||||||
}
|
}
|
||||||
defer fd.writeUnlock()
|
defer fd.writeUnlock()
|
||||||
|
|
||||||
|
if len(buf) == 0 {
|
||||||
|
// handle zero-byte payload
|
||||||
|
o := &fd.wop
|
||||||
|
o.InitBuf(buf)
|
||||||
|
o.sa = sa
|
||||||
|
n, err := wsrv.ExecIO(o, func(o *operation) error {
|
||||||
|
return syscall.WSASendto(o.fd.Sysfd, &o.buf, 1, &o.qty, 0, o.sa, &o.o, nil)
|
||||||
|
})
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
ntotal := 0
|
ntotal := 0
|
||||||
for len(buf) > 0 {
|
for len(buf) > 0 {
|
||||||
b := buf
|
b := buf
|
||||||
|
Loading…
Reference in New Issue
Block a user