aboutsummaryrefslogtreecommitdiff
path: root/src/net/http/request.go
diff options
context:
space:
mode:
authorMeng Zhuo <mengzhuo1203@gmail.com>2018-11-27 16:16:43 +0800
committerBrad Fitzpatrick <bradfitz@golang.org>2018-11-28 21:33:21 +0000
commit9aadbf5755dc8e3c3b0a224f513c92b804a1a3a7 (patch)
treeb2f0bece0b962e59469027ee43a86c52a08c8009 /src/net/http/request.go
parent4f15b54780af7159732794f9d67c9a8a455bbf61 (diff)
downloadgo-9aadbf5755dc8e3c3b0a224f513c92b804a1a3a7.tar.gz
go-9aadbf5755dc8e3c3b0a224f513c92b804a1a3a7.zip
net/http: prevent transport sends two "Connection: close" headers
There are three functions that do Connection header write: 1. transport.go/ persistConn.roundTrip 2. transfer.go/ transferWriter.writeHeader 3. request.go/ Request.write The root cause is roundTrip didn't lookup into request.Close and transferWriter didn't take care of extraHeaders. Fixes #28886 Change-Id: I1d131019c7cd42eb1bcc972c631b7df7511c1f39 Reviewed-on: https://go-review.googlesource.com/c/150722 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/net/http/request.go')
-rw-r--r--src/net/http/request.go3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/net/http/request.go b/src/net/http/request.go
index 5b7e6564ae..d994e81d23 100644
--- a/src/net/http/request.go
+++ b/src/net/http/request.go
@@ -1330,6 +1330,9 @@ func (r *Request) wantsHttp10KeepAlive() bool {
}
func (r *Request) wantsClose() bool {
+ if r.Close {
+ return true
+ }
return hasToken(r.Header.get("Connection"), "close")
}