diff options
author | Dave Cheney <dave@cheney.net> | 2012-09-22 05:54:50 +1000 |
---|---|---|
committer | Dave Cheney <dave@cheney.net> | 2012-09-22 05:54:50 +1000 |
commit | aec9af0acba6c997b9bb61e5c3287fae2bb783bf (patch) | |
tree | 751ca3f6a88cefdf67cb72bbc07a9a5ffb3bf442 | |
parent | 8851c499892c74faf670927538576fc674ff9d4a (diff) | |
download | go-aec9af0acba6c997b9bb61e5c3287fae2bb783bf.tar.gz go-aec9af0acba6c997b9bb61e5c3287fae2bb783bf.zip |
[release-branch.go1] net/http/httputil: fix race in DumpRequestOut
««« backport 3b78b41a4b50
net/http/httputil: fix race in DumpRequestOut
Fixes #3892.
Swapping the order of the writers inside the MultiWriter ensures
the request will be written to buf before http.ReadRequest completes.
The fencedBuffer is not required to make the test pass on
any machine that I have access too, but as the buf is shared
across goroutines, I think it is necessary for correctness.
R=bradfitz, fullung, franciscossouza
CC=golang-dev
https://golang.org/cl/6483061
»»»
-rw-r--r-- | src/pkg/net/http/httputil/dump.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/pkg/net/http/httputil/dump.go b/src/pkg/net/http/httputil/dump.go index 892ef4eded..0fb2eeb8c0 100644 --- a/src/pkg/net/http/httputil/dump.go +++ b/src/pkg/net/http/httputil/dump.go @@ -89,7 +89,7 @@ func DumpRequestOut(req *http.Request, body bool) ([]byte, error) { t := &http.Transport{ Dial: func(net, addr string) (net.Conn, error) { - return &dumpConn{io.MultiWriter(pw, &buf), dr}, nil + return &dumpConn{io.MultiWriter(&buf, pw), dr}, nil }, } |