]> Cypherpunks repositories - gostls13.git/commitdiff
net/http/httputil: fix race in DumpRequestOut
authorDave Cheney <dave@cheney.net>
Tue, 28 Aug 2012 23:05:30 +0000 (09:05 +1000)
committerDave Cheney <dave@cheney.net>
Tue, 28 Aug 2012 23:05:30 +0000 (09:05 +1000)
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

src/pkg/net/http/httputil/dump.go

index 5a95eb8cc25a866343e68d7a07bb659e31a826fa..0b00356616535eee3f2f80976ea2de4df2c5f1f2 100644 (file)
@@ -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
                },
        }