]> Cypherpunks repositories - gostls13.git/commitdiff
Revert "net/http: do not force the Content-Length header if nilled"
authorAustin Clements <austin@google.com>
Mon, 15 May 2023 21:19:08 +0000 (21:19 +0000)
committerGopher Robot <gobot@golang.org>
Mon, 15 May 2023 21:31:16 +0000 (21:31 +0000)
This reverts CL 469095.

The newly added TestDisableContentLength is failing on all longtest
builders.

Change-Id: Id307df61c7bf80691d9c276e8d200eebf6d4a59c
Reviewed-on: https://go-review.googlesource.com/c/go/+/495017
Auto-Submit: Austin Clements <austin@google.com>
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

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

index 12f6b768bd6a5effa252435545c2e70ae284be91..33a7b54d5d903f2c4b205e76e183a9a1690aa99c 100644 (file)
@@ -6825,37 +6825,3 @@ func testHeadBody(t *testing.T, mode testMode, chunked bool, method string) {
                }
        }
 }
-
-// TestContentLengthResponseCanBeNilled verifies that the Content-Length is set by default
-// or disabled when the header is set to nil.
-func TestDisableContentLength(t *testing.T) { run(t, testDisableContentLength) }
-func testDisableContentLength(t *testing.T, mode testMode) {
-       if mode == http2Mode {
-               t.Skip("skipping until h2_bundle.go is updated; see https://go-review.googlesource.com/c/net/+/471535")
-       }
-
-       noCL := newClientServerTest(t, mode, HandlerFunc(func(w ResponseWriter, r *Request) {
-               w.Header()["Content-Length"] = nil // disable the default Content-Length response
-               fmt.Fprintf(w, "OK")
-       }))
-
-       res, err := noCL.c.Get(noCL.ts.URL)
-       if err != nil {
-               t.Error(err)
-       }
-       if got, haveCL := res.Header["Content-Length"]; haveCL {
-               t.Errorf("Unexpected Content-Length: %q", got)
-       }
-
-       withCL := newClientServerTest(t, mode, HandlerFunc(func(w ResponseWriter, r *Request) {
-               fmt.Fprintf(w, "OK")
-       }))
-
-       res, err = withCL.c.Get(withCL.ts.URL)
-       if err != nil {
-               t.Error(err)
-       }
-       if got := res.Header.Get("Content-Length"); got != "2" {
-               t.Errorf("Content-Length: %q; want 2", got)
-       }
-}
index 680c5f68f425fa2a4e01af43d5180e3e3aa55389..efdc031740081f8453850d0cd8422d2140c8226b 100644 (file)
@@ -1320,7 +1320,7 @@ func (cw *chunkWriter) writeHeader(p []byte) {
        // send a Content-Length header.
        // Further, we don't send an automatic Content-Length if they
        // set a Transfer-Encoding, because they're generally incompatible.
-       if w.handlerDone.Load() && !trailers && !hasTE && bodyAllowedForStatus(w.status) && !header.has("Content-Length") && (!isHEAD || len(p) > 0) {
+       if w.handlerDone.Load() && !trailers && !hasTE && bodyAllowedForStatus(w.status) && header.get("Content-Length") == "" && (!isHEAD || len(p) > 0) {
                w.contentLength = int64(len(p))
                setHeader.contentLength = strconv.AppendInt(cw.res.clenBuf[:0], int64(len(p)), 10)
        }