Skip to content

Commit 3ba3155

Browse files
committed
net/http: send StatusOK on empty body with TimeoutHandler
Fixes #15948 Change-Id: Idd79859b3e98d61cd4e3ef9caa5d3b2524fd026a Reviewed-on: https://go-review.googlesource.com/23810 Reviewed-by: Ian Lance Taylor <[email protected]> Run-TryBot: Ian Lance Taylor <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent a71af25 commit 3ba3155

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

src/net/http/serve_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1996,6 +1996,26 @@ func TestTimeoutHandlerStartTimerWhenServing(t *testing.T) {
19961996
}
19971997
}
19981998

1999+
// https://golang.org/issue/15948
2000+
func TestTimeoutHandlerEmptyResponse(t *testing.T) {
2001+
defer afterTest(t)
2002+
var handler HandlerFunc = func(w ResponseWriter, _ *Request) {
2003+
// No response.
2004+
}
2005+
timeout := 300 * time.Millisecond
2006+
ts := httptest.NewServer(TimeoutHandler(handler, timeout, ""))
2007+
defer ts.Close()
2008+
2009+
res, err := Get(ts.URL)
2010+
if err != nil {
2011+
t.Fatal(err)
2012+
}
2013+
defer res.Body.Close()
2014+
if res.StatusCode != StatusOK {
2015+
t.Errorf("got res.StatusCode %d, want %v", res.StatusCode, StatusOK)
2016+
}
2017+
}
2018+
19992019
// Verifies we don't path.Clean() on the wrong parts in redirects.
20002020
func TestRedirectMunging(t *testing.T) {
20012021
req, _ := NewRequest("GET", "http://example.com/", nil)

src/net/http/server.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2464,6 +2464,9 @@ func (h *timeoutHandler) ServeHTTP(w ResponseWriter, r *Request) {
24642464
for k, vv := range tw.h {
24652465
dst[k] = vv
24662466
}
2467+
if !tw.wroteHeader {
2468+
tw.code = StatusOK
2469+
}
24672470
w.WriteHeader(tw.code)
24682471
w.Write(tw.wbuf.Bytes())
24692472
if t != nil {

0 commit comments

Comments
 (0)