mirror of
https://github.com/golang/go
synced 2024-11-23 20:00:04 -07:00
internal/poll: advance file position in windows sendfile
Some versions of Windows (Windows 10 1803) do not set file position after TransmitFile completes. So just use Seek to set file position before returning from sendfile. Fixes #25722 Change-Id: I7a49be10304b5db19dda707b13ac93d338aeb190 Reviewed-on: https://go-review.googlesource.com/131976 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Yasuhiro MATSUMOTO <mattn.jp@gmail.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
09ea3c08e8
commit
8359b5e134
@ -38,5 +38,11 @@ func SendFile(fd *FD, src syscall.Handle, n int64) (int64, error) {
|
|||||||
done, err := wsrv.ExecIO(o, func(o *operation) error {
|
done, err := wsrv.ExecIO(o, func(o *operation) error {
|
||||||
return syscall.TransmitFile(o.fd.Sysfd, o.handle, o.qty, 0, &o.o, nil, syscall.TF_WRITE_BEHIND)
|
return syscall.TransmitFile(o.fd.Sysfd, o.handle, o.qty, 0, &o.o, nil, syscall.TF_WRITE_BEHIND)
|
||||||
})
|
})
|
||||||
|
if err == nil {
|
||||||
|
// Some versions of Windows (Windows 10 1803) do not set
|
||||||
|
// file position after TransmitFile completes.
|
||||||
|
// So just use Seek to set file position.
|
||||||
|
_, err = syscall.Seek(o.handle, curpos+int64(done), 0)
|
||||||
|
}
|
||||||
return int64(done), err
|
return int64(done), err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user