Skip to content

Commit b74aaa1

Browse files
neildgopherbot
authored andcommitted
net/http: deflake TestResponseControllerSetFutureWriteDeadline
Don't set the server's write deadline until after the client has read the response headers, avoiding test failures if the deadline expires before or while writing headers. Fixes #56807. Change-Id: I5f80c108b360d030132a13661774a30fac453856 Reviewed-on: https://go-review.googlesource.com/c/go/+/451715 Auto-Submit: Damien Neil <[email protected]> TryBot-Result: Gopher Robot <[email protected]> Run-TryBot: Damien Neil <[email protected]> Reviewed-by: Bryan Mills <[email protected]>
1 parent 5f7abec commit b74aaa1

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/net/http/responsecontroller_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,14 @@ func testResponseControllerSetFutureWriteDeadline(t *testing.T, mode testMode) {
132132
t.Skip("skip until h2_bundle.go is updated")
133133
}
134134
errc := make(chan error, 1)
135+
startwritec := make(chan struct{})
135136
cst := newClientServerTest(t, mode, HandlerFunc(func(w ResponseWriter, r *Request) {
136137
ctl := NewResponseController(w)
138+
w.WriteHeader(200)
139+
if err := ctl.Flush(); err != nil {
140+
t.Errorf("ctl.Flush() = %v, want nil", err)
141+
}
142+
<-startwritec // don't set the deadline until the client reads response headers
137143
if err := ctl.SetWriteDeadline(time.Now().Add(1 * time.Millisecond)); err != nil {
138144
t.Errorf("ctl.SetWriteDeadline() = %v, want nil", err)
139145
}
@@ -142,6 +148,7 @@ func testResponseControllerSetFutureWriteDeadline(t *testing.T, mode testMode) {
142148
}))
143149

144150
res, err := cst.c.Get(cst.ts.URL)
151+
close(startwritec)
145152
if err != nil {
146153
t.Fatalf("unexpected connection error: %v", err)
147154
}

0 commit comments

Comments
 (0)