]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: send StatusOK on empty body with TimeoutHandler
authorAndrew Gerrand <adg@golang.org>
Mon, 6 Jun 2016 00:23:49 +0000 (10:23 +1000)
committerAndrew Gerrand <adg@golang.org>
Mon, 6 Jun 2016 21:15:40 +0000 (21:15 +0000)
Fixes #15948

Change-Id: Idd79859b3e98d61cd4e3ef9caa5d3b2524fd026a
Reviewed-on: https://go-review.googlesource.com/23810
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/net/http/serve_test.go
src/net/http/server.go

index 26aefec7def58530db2128d1501410e75902b8ee..8e4bbdc0c4b69a858924bf46816b8851c21ac751 100644 (file)
@@ -1996,6 +1996,26 @@ func TestTimeoutHandlerStartTimerWhenServing(t *testing.T) {
        }
 }
 
+// https://golang.org/issue/15948
+func TestTimeoutHandlerEmptyResponse(t *testing.T) {
+       defer afterTest(t)
+       var handler HandlerFunc = func(w ResponseWriter, _ *Request) {
+               // No response.
+       }
+       timeout := 300 * time.Millisecond
+       ts := httptest.NewServer(TimeoutHandler(handler, timeout, ""))
+       defer ts.Close()
+
+       res, err := Get(ts.URL)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer res.Body.Close()
+       if res.StatusCode != StatusOK {
+               t.Errorf("got res.StatusCode %d, want %v", res.StatusCode, StatusOK)
+       }
+}
+
 // Verifies we don't path.Clean() on the wrong parts in redirects.
 func TestRedirectMunging(t *testing.T) {
        req, _ := NewRequest("GET", "http://example.com/", nil)
index 4286d719ec8558e6babe8bd1278a2429c3318bc0..8ecced85db091e5345c278890c448f60f17abb4c 100644 (file)
@@ -2464,6 +2464,9 @@ func (h *timeoutHandler) ServeHTTP(w ResponseWriter, r *Request) {
                for k, vv := range tw.h {
                        dst[k] = vv
                }
+               if !tw.wroteHeader {
+                       tw.code = StatusOK
+               }
                w.WriteHeader(tw.code)
                w.Write(tw.wbuf.Bytes())
                if t != nil {