diff options
author | Luke Young <bored-engineer@users.noreply.github.com> | 2019-10-20 06:03:55 +0000 |
---|---|---|
committer | Emmanuel Odeke <emm.odeke@gmail.com> | 2019-10-20 06:25:35 +0000 |
commit | 39cfb7609d293ae9acc40d09645d01258dc8edbf (patch) | |
tree | 83a2e7f031c09241df9cc94915cd749051349245 /src/net/http/transport_test.go | |
parent | 72275c0dea7887597e3e445676674ba6af702f06 (diff) | |
download | go-39cfb7609d293ae9acc40d09645d01258dc8edbf.tar.gz go-39cfb7609d293ae9acc40d09645d01258dc8edbf.zip |
net/http: make Transport.roundTrip close body on invalid method
Updates #35015
Change-Id: Ibfe8f72ed3887ca88ce9c1d8a29dacda72f3fe17
GitHub-Last-Rev: 4bfc56e71660ad9624ac5eb594b3afd0d221c99d
GitHub-Pull-Request: golang/go#35014
Reviewed-on: https://go-review.googlesource.com/c/go/+/202237
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/net/http/transport_test.go')
-rw-r--r-- | src/net/http/transport_test.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go index d7eef0d94c..0fe1283d97 100644 --- a/src/net/http/transport_test.go +++ b/src/net/http/transport_test.go @@ -5719,3 +5719,32 @@ func TestInvalidHeaderResponse(t *testing.T) { t.Errorf(`bad "Foo " header value: %q, want %q`, v, "bar") } } + +type bodyCloser bool + +func (bc *bodyCloser) Close() error { + *bc = true + return nil +} +func (bc *bodyCloser) Read(b []byte) (n int, err error) { + return 0, io.EOF +} + +func TestInvalidMethodClosesBody(t *testing.T) { + cst := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {})) + defer cst.Close() + var bc bodyCloser + u, _ := url.Parse(cst.URL) + req := &Request{ + Method: " ", + URL: u, + Body: &bc, + } + _, err := DefaultClient.Do(req) + if err == nil { + t.Fatal("Expected an error") + } + if !bc { + t.Fatal("Expected body to have been closed") + } +} |