1
0
mirror of https://github.com/golang/go synced 2024-11-26 02:57:57 -07:00

net/http: fix flaky TestDisableKeepAliveUpgrade

This test hijacks a connection. It was reading from the net.Conn
returned by Hijack, not the bufio.ReadWriter, causing flaky failures
when a read-ahead byte was held in the read buffer.

Fixes #43073.

Change-Id: Ic3e7f704fba9635fd851cb3c0c0c74e312b75f6e
Reviewed-on: https://go-review.googlesource.com/c/go/+/285596
Trust: Damien Neil <dneil@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Anmol Sethi <nhooyr@gmail.com>
This commit is contained in:
Damien Neil 2021-01-21 18:24:55 -08:00
parent 50cba0506f
commit 7ece3a7b17

View File

@ -6460,13 +6460,15 @@ func TestDisableKeepAliveUpgrade(t *testing.T) {
w.Header().Set("Connection", "Upgrade")
w.Header().Set("Upgrade", "someProto")
w.WriteHeader(StatusSwitchingProtocols)
c, _, err := w.(Hijacker).Hijack()
c, buf, err := w.(Hijacker).Hijack()
if err != nil {
return
}
defer c.Close()
io.Copy(c, c)
// Copy from the *bufio.ReadWriter, which may contain buffered data.
// Copy to the net.Conn, to avoid buffering the output.
io.Copy(c, buf)
}))
s.Config.SetKeepAlivesEnabled(false)
s.Start()