http2: eliminate arbitrary timeouts in readFrame methods
Certain slower builders empirically do not finish before these
timeouts, and if a real deadlock should occur it would be more useful
to let the test itself time out and get a goroutine dump anyway.
Fixes golang/go#50556
Fixes golang/go#34615
Change-Id: I53ea616faa34f4ccc73af8eb18b794e12271b883
Reviewed-on: https://go-review.googlesource.com/c/net/+/377814
Trust: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Benny Siegert <bsiegert@gmail.com>
Trust: Benny Siegert <bsiegert@gmail.com>
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/http2/server_test.go b/http2/server_test.go
index 23d8a62..ae45f31 100644
--- a/http2/server_test.go
+++ b/http2/server_test.go
@@ -478,31 +478,8 @@
}
}
-func readFrameTimeout(fr *Framer, wait time.Duration) (Frame, error) {
- ch := make(chan interface{}, 1)
- go func() {
- fr, err := fr.ReadFrame()
- if err != nil {
- ch <- err
- } else {
- ch <- fr
- }
- }()
- t := time.NewTimer(wait)
- select {
- case v := <-ch:
- t.Stop()
- if fr, ok := v.(Frame); ok {
- return fr, nil
- }
- return nil, v.(error)
- case <-t.C:
- return nil, errors.New("timeout waiting for frame")
- }
-}
-
func (st *serverTester) readFrame() (Frame, error) {
- return readFrameTimeout(st.fr, 2*time.Second)
+ return st.fr.ReadFrame()
}
func (st *serverTester) wantHeaders() *HeadersFrame {
diff --git a/http2/transport_test.go b/http2/transport_test.go
index 1d2210f..1cdd981 100644
--- a/http2/transport_test.go
+++ b/http2/transport_test.go
@@ -863,7 +863,7 @@
}
func (ct *clientTester) readFrame() (Frame, error) {
- return readFrameTimeout(ct.fr, 2*time.Second)
+ return ct.fr.ReadFrame()
}
func (ct *clientTester) firstHeaders() (*HeadersFrame, error) {