aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Neil <dneil@google.com>2021-01-21 18:24:55 -0800
committerDamien Neil <dneil@google.com>2021-01-22 16:23:59 +0000
commit7ece3a7b17ff637755dbe9e5687af22fd5f82168 (patch)
tree03b2a8fff29475ed1f1a9278eb462b69c8f2fbe2
parent50cba0506f0f979cf1a1670ffff9113a4cdb6273 (diff)
downloadgo-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.go6
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()