]> Cypherpunks repositories - gostls13.git/commit
net/http: revert change making NewRequest set ContentLength -1
authorBrad Fitzpatrick <bradfitz@golang.org>
Thu, 1 Dec 2016 22:01:35 +0000 (22:01 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 1 Dec 2016 23:49:35 +0000 (23:49 +0000)
commit4bc7b5aeba2061c14199354b1c59592aa481bac8
tree5f6f4ecf902edf2730eda33a27ff4dcd87246642
parent7736cbafd994873519372980e9eb802c37e4c8c9
net/http: revert change making NewRequest set ContentLength -1

The introduction of NoBody and related body-peeking bug fixes also
added a "cleanup" of sorts to make NewRequest set the returned
Requests's ContentLength to -1 when it didn't know it.

Using -1 to mean unknown is what the documentation says, but then
people apparently(?) depended on it being zero so they could do this:

    req, _ := http.NewRequest("POST", url, someNonNilReaderWithUnkownSize)
    req.Body = nil
    res, err := http.DefaultClient.Do(req)

... and expect it to work.

After https://golang.org/cl/31445 the contrived(?) code above stopped
working, since Body was nil and ContentLength was -1, which has been
disallowed since Go 1.0.

So this restores the old behavior of NewRequest, not setting it to -1.
That part of the fix isn't required as of https://golang.org/cl/31726
(which added NoBody)

I still don't know whether this bug is hypothetical or actually
affected people in practice.

Let's assume it's real for now.

Fixes #18117

Change-Id: I42400856ee92a1a4999b5b4668bef97d885fbb53
Reviewed-on: https://go-review.googlesource.com/33801
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/net/http/request.go
src/net/http/request_test.go
src/net/http/requestwrite_test.go