From: Brad Fitzpatrick Date: Wed, 30 Nov 2016 18:45:56 +0000 (+0000) Subject: net/http: teach NewRequest that NoBody has ContentLength zero X-Git-Tag: go1.8beta2~117 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=1102c70bc425e66d3b8981f69a40bd2043cf7e60;p=gostls13.git net/http: teach NewRequest that NoBody has ContentLength zero NoBody is new in Go 1.8. Found while investigating #18117 Change-Id: I6bda030f358e2270f090d108cb3a89c8a2665fcb Reviewed-on: https://go-review.googlesource.com/33714 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- diff --git a/src/net/http/request.go b/src/net/http/request.go index 7a86322f94..2d65ca3c8a 100644 --- a/src/net/http/request.go +++ b/src/net/http/request.go @@ -785,7 +785,9 @@ func NewRequest(method, urlStr string, body io.Reader) (*Request, error) { return ioutil.NopCloser(&r), nil } default: - req.ContentLength = -1 // unknown + if body != NoBody { + req.ContentLength = -1 // unknown + } } // For client requests, Request.ContentLength of 0 // means either actually 0, or unknown. The only way diff --git a/src/net/http/request_test.go b/src/net/http/request_test.go index 3c965c1e8a..483c025fb0 100644 --- a/src/net/http/request_test.go +++ b/src/net/http/request_test.go @@ -825,6 +825,16 @@ func TestNewRequestGetBody(t *testing.T) { } } +func TestNewRequestNoBody(t *testing.T) { + req, err := NewRequest("GET", "http://foo.com/", NoBody) + if err != nil { + t.Fatal(err) + } + if req.ContentLength != 0 { + t.Errorf("ContentLength = %d; want 0", req.ContentLength) + } +} + func testMissingFile(t *testing.T, req *Request) { f, fh, err := req.FormFile("missing") if f != nil {