Skip to content

Commit 0dd24b2

Browse files
Bryan C. Millsneild
Bryan C. Mills
authored andcommitted
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 <[email protected]> Run-TryBot: Bryan Mills <[email protected]> TryBot-Result: Gopher Robot <[email protected]> Reviewed-by: Benny Siegert <[email protected]> Trust: Benny Siegert <[email protected]> Reviewed-by: Damien Neil <[email protected]>
1 parent d55c255 commit 0dd24b2

File tree

2 files changed

+2
-25
lines changed

2 files changed

+2
-25
lines changed

http2/server_test.go

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -478,31 +478,8 @@ func (st *serverTester) writeDataPadded(streamID uint32, endStream bool, data, p
478478
}
479479
}
480480

481-
func readFrameTimeout(fr *Framer, wait time.Duration) (Frame, error) {
482-
ch := make(chan interface{}, 1)
483-
go func() {
484-
fr, err := fr.ReadFrame()
485-
if err != nil {
486-
ch <- err
487-
} else {
488-
ch <- fr
489-
}
490-
}()
491-
t := time.NewTimer(wait)
492-
select {
493-
case v := <-ch:
494-
t.Stop()
495-
if fr, ok := v.(Frame); ok {
496-
return fr, nil
497-
}
498-
return nil, v.(error)
499-
case <-t.C:
500-
return nil, errors.New("timeout waiting for frame")
501-
}
502-
}
503-
504481
func (st *serverTester) readFrame() (Frame, error) {
505-
return readFrameTimeout(st.fr, 2*time.Second)
482+
return st.fr.ReadFrame()
506483
}
507484

508485
func (st *serverTester) wantHeaders() *HeadersFrame {

http2/transport_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -863,7 +863,7 @@ func (ct *clientTester) run() {
863863
}
864864

865865
func (ct *clientTester) readFrame() (Frame, error) {
866-
return readFrameTimeout(ct.fr, 2*time.Second)
866+
return ct.fr.ReadFrame()
867867
}
868868

869869
func (ct *clientTester) firstHeaders() (*HeadersFrame, error) {

0 commit comments

Comments
 (0)