diff options
author | Damien Neil <dneil@google.com> | 2021-01-21 18:24:55 -0800 |
---|---|---|
committer | Damien Neil <dneil@google.com> | 2021-01-22 16:23:59 +0000 |
commit | 7ece3a7b17ff637755dbe9e5687af22fd5f82168 (patch) | |
tree | 03b2a8fff29475ed1f1a9278eb462b69c8f2fbe2 | |
parent | 50cba0506f0f979cf1a1670ffff9113a4cdb6273 (diff) | |
download | go-7ece3a7b17ff637755dbe9e5687af22fd5f82168.tar.gz go-7ece3a7b17ff637755dbe9e5687af22fd5f82168.zip |
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>
-rw-r--r-- | src/net/http/serve_test.go | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go index 95e6bf4adb..f8687416fe 100644 --- a/src/net/http/serve_test.go +++ b/src/net/http/serve_test.go @@ -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() |