From 44d057d5818e11982b679a83d54e9a4eac4f823f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Miguel=20=C3=81ngel=20Jimeno?= Date: Tue, 23 Aug 2022 14:06:19 +0200 Subject: [PATCH] net/http/httputil: do not duplicate 'Connection: close' headers Fixes #54616. Change-Id: I46f41bbccff7b49f26f60c1edf65acfd1701aed5 Reviewed-on: https://go-review.googlesource.com/c/go/+/425155 Reviewed-by: Damien Neil Reviewed-by: David Chase TryBot-Result: Gopher Robot Run-TryBot: Damien Neil --- src/net/http/httputil/dump.go | 3 --- src/net/http/httputil/dump_test.go | 13 +++++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/net/http/httputil/dump.go b/src/net/http/httputil/dump.go index d7baecd9c1..6f5fa0d01d 100644 --- a/src/net/http/httputil/dump.go +++ b/src/net/http/httputil/dump.go @@ -258,9 +258,6 @@ func DumpRequest(req *http.Request, body bool) ([]byte, error) { if len(req.TransferEncoding) > 0 { fmt.Fprintf(&b, "Transfer-Encoding: %s\r\n", strings.Join(req.TransferEncoding, ",")) } - if req.Close { - fmt.Fprintf(&b, "Connection: close\r\n") - } err = req.Header.WriteSubset(&b, reqWriteExcludeHeaderDump) if err != nil { diff --git a/src/net/http/httputil/dump_test.go b/src/net/http/httputil/dump_test.go index 5df2ee8075..764750e2f7 100644 --- a/src/net/http/httputil/dump_test.go +++ b/src/net/http/httputil/dump_test.go @@ -236,6 +236,19 @@ var dumpTests = []dumpTest{ "Transfer-Encoding: chunked\r\n" + "Accept-Encoding: gzip\r\n\r\n", }, + + // Issue 54616: request with Connection header doesn't result in duplicate header. + { + GetReq: func() *http.Request { + return mustReadRequest("GET / HTTP/1.1\r\n" + + "Host: example.com\r\n" + + "Connection: close\r\n\r\n") + }, + NoBody: true, + WantDump: "GET / HTTP/1.1\r\n" + + "Host: example.com\r\n" + + "Connection: close\r\n\r\n", + }, } func TestDumpRequest(t *testing.T) { -- 2.50.0