aboutsummaryrefslogtreecommitdiff
path: root/src/net/http/transport_test.go
diff options
context:
space:
mode:
authorLuke Young <bored-engineer@users.noreply.github.com>2019-10-20 06:03:55 +0000
committerEmmanuel Odeke <emm.odeke@gmail.com>2019-10-20 06:25:35 +0000
commit39cfb7609d293ae9acc40d09645d01258dc8edbf (patch)
tree83a2e7f031c09241df9cc94915cd749051349245 /src/net/http/transport_test.go
parent72275c0dea7887597e3e445676674ba6af702f06 (diff)
downloadgo-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.go29
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")
+ }
+}