Commit 3598d4b8 authored by Emmanuel Odeke's avatar Emmanuel Odeke Committed by Brad Fitzpatrick

net/http/httputil: DumpRequest dumps Content-Length if set in header

Fixes #7215

Change-Id: I108171ef18cac66d0dc11ce3553c26fc49529807
Reviewed-on: https://go-review.googlesource.com/21790Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
parent c31fdd4e
...@@ -163,7 +163,6 @@ func valueOrDefault(value, def string) string { ...@@ -163,7 +163,6 @@ func valueOrDefault(value, def string) string {
var reqWriteExcludeHeaderDump = map[string]bool{ var reqWriteExcludeHeaderDump = map[string]bool{
"Host": true, // not in Header map anyway "Host": true, // not in Header map anyway
"Content-Length": true,
"Transfer-Encoding": true, "Transfer-Encoding": true,
"Trailer": true, "Trailer": true,
} }
......
...@@ -122,6 +122,10 @@ var dumpTests = []dumpTest{ ...@@ -122,6 +122,10 @@ var dumpTests = []dumpTest{
Host: "post.tld", Host: "post.tld",
Path: "/", Path: "/",
}, },
Header: http.Header{
"Content-Length": []string{"8193"},
},
ContentLength: 8193, ContentLength: 8193,
ProtoMajor: 1, ProtoMajor: 1,
ProtoMinor: 1, ProtoMinor: 1,
...@@ -135,6 +139,10 @@ var dumpTests = []dumpTest{ ...@@ -135,6 +139,10 @@ var dumpTests = []dumpTest{
"Content-Length: 8193\r\n" + "Content-Length: 8193\r\n" +
"Accept-Encoding: gzip\r\n\r\n" + "Accept-Encoding: gzip\r\n\r\n" +
strings.Repeat("a", 8193), strings.Repeat("a", 8193),
WantDump: "POST / HTTP/1.1\r\n" +
"Host: post.tld\r\n" +
"Content-Length: 8193\r\n\r\n" +
strings.Repeat("a", 8193),
}, },
{ {
...@@ -144,6 +152,38 @@ var dumpTests = []dumpTest{ ...@@ -144,6 +152,38 @@ var dumpTests = []dumpTest{
WantDump: "GET http://foo.com/ HTTP/1.1\r\n" + WantDump: "GET http://foo.com/ HTTP/1.1\r\n" +
"User-Agent: blah\r\n\r\n", "User-Agent: blah\r\n\r\n",
}, },
// Issue #7215. DumpRequest should return the "Content-Length" when set
{
Req: *mustReadRequest("POST /v2/api/?login HTTP/1.1\r\n" +
"Host: passport.myhost.com\r\n" +
"Content-Length: 3\r\n" +
"\r\nkey1=name1&key2=name2"),
WantDump: "POST /v2/api/?login HTTP/1.1\r\n" +
"Host: passport.myhost.com\r\n" +
"Content-Length: 3\r\n" +
"\r\nkey",
},
// Issue #7215. DumpRequest should return the "Content-Length" in ReadRequest
{
Req: *mustReadRequest("POST /v2/api/?login HTTP/1.1\r\n" +
"Host: passport.myhost.com\r\n" +
"Content-Length: 0\r\n" +
"\r\nkey1=name1&key2=name2"),
WantDump: "POST /v2/api/?login HTTP/1.1\r\n" +
"Host: passport.myhost.com\r\n" +
"Content-Length: 0\r\n\r\n",
},
// Issue #7215. DumpRequest should not return the "Content-Length" if unset
{
Req: *mustReadRequest("POST /v2/api/?login HTTP/1.1\r\n" +
"Host: passport.myhost.com\r\n" +
"\r\nkey1=name1&key2=name2"),
WantDump: "POST /v2/api/?login HTTP/1.1\r\n" +
"Host: passport.myhost.com\r\n\r\n",
},
} }
func TestDumpRequest(t *testing.T) { func TestDumpRequest(t *testing.T) {
......
...@@ -47,7 +47,7 @@ func ExampleDumpRequest() { ...@@ -47,7 +47,7 @@ func ExampleDumpRequest() {
fmt.Printf("%s", b) fmt.Printf("%s", b)
// Output: // Output:
// "POST / HTTP/1.1\r\nHost: www.example.org\r\nAccept-Encoding: gzip\r\nUser-Agent: Go-http-client/1.1\r\n\r\nGo is a general-purpose language designed with systems programming in mind." // "POST / HTTP/1.1\r\nHost: www.example.org\r\nAccept-Encoding: gzip\r\nContent-Length: 75\r\nUser-Agent: Go-http-client/1.1\r\n\r\nGo is a general-purpose language designed with systems programming in mind."
} }
func ExampleDumpRequestOut() { func ExampleDumpRequestOut() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment