From: Dave Cheney Date: Fri, 21 Sep 2012 19:54:50 +0000 (+1000) Subject: [release-branch.go1] net/http/httputil: fix race in DumpRequestOut X-Git-Tag: go1.0.3~65 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=aec9af0acba6c997b9bb61e5c3287fae2bb783bf;p=gostls13.git [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 »»» --- 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 }, }