mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
internal/poll, net: fix sendfile on Windows, add test
Fixes #27085 Change-Id: I4eb3ff7c76e0b8e4d8fe0298f739b0284d74a031 Reviewed-on: https://go-review.googlesource.com/130855 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
3fd62ce910
commit
d35135b9da
2 changed files with 63 additions and 2 deletions
|
|
@ -149,3 +149,64 @@ func TestSendfileParts(t *testing.T) {
|
|||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSendfileSeeked(t *testing.T) {
|
||||
ln, err := newLocalListener("tcp")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer ln.Close()
|
||||
|
||||
const seekTo = 65 << 10
|
||||
const sendSize = 10 << 10
|
||||
|
||||
errc := make(chan error, 1)
|
||||
go func(ln Listener) {
|
||||
// Wait for a connection.
|
||||
conn, err := ln.Accept()
|
||||
if err != nil {
|
||||
errc <- err
|
||||
close(errc)
|
||||
return
|
||||
}
|
||||
|
||||
go func() {
|
||||
defer close(errc)
|
||||
defer conn.Close()
|
||||
|
||||
f, err := os.Open(twain)
|
||||
if err != nil {
|
||||
errc <- err
|
||||
return
|
||||
}
|
||||
defer f.Close()
|
||||
if _, err := f.Seek(seekTo, os.SEEK_SET); err != nil {
|
||||
errc <- err
|
||||
return
|
||||
}
|
||||
|
||||
_, err = io.CopyN(conn, f, sendSize)
|
||||
if err != nil {
|
||||
errc <- err
|
||||
return
|
||||
}
|
||||
}()
|
||||
}(ln)
|
||||
|
||||
c, err := Dial("tcp", ln.Addr().String())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer c.Close()
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
buf.ReadFrom(c)
|
||||
|
||||
if buf.Len() != sendSize {
|
||||
t.Errorf("Got %d bytes; want %d", buf.Len(), sendSize)
|
||||
}
|
||||
|
||||
for err := range errc {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue