mirror of
https://github.com/golang/go
synced 2024-11-12 09:50:21 -07:00
net/http: fix data race on countReader.n
Fixes #4220. R=dvyukov, bradfitz CC=golang-dev https://golang.org/cl/6638053
This commit is contained in:
parent
f1b1753627
commit
a14f87ca81
@ -1063,7 +1063,7 @@ type countReader struct {
|
||||
|
||||
func (cr countReader) Read(p []byte) (n int, err error) {
|
||||
n, err = cr.r.Read(p)
|
||||
*cr.n += int64(n)
|
||||
atomic.AddInt64(cr.n, int64(n))
|
||||
return
|
||||
}
|
||||
|
||||
@ -1081,8 +1081,8 @@ func TestRequestBodyLimit(t *testing.T) {
|
||||
}))
|
||||
defer ts.Close()
|
||||
|
||||
nWritten := int64(0)
|
||||
req, _ := NewRequest("POST", ts.URL, io.LimitReader(countReader{neverEnding('a'), &nWritten}, limit*200))
|
||||
nWritten := new(int64)
|
||||
req, _ := NewRequest("POST", ts.URL, io.LimitReader(countReader{neverEnding('a'), nWritten}, limit*200))
|
||||
|
||||
// Send the POST, but don't care it succeeds or not. The
|
||||
// remote side is going to reply and then close the TCP
|
||||
@ -1095,7 +1095,7 @@ func TestRequestBodyLimit(t *testing.T) {
|
||||
// the remote side hung up on us before we wrote too much.
|
||||
_, _ = DefaultClient.Do(req)
|
||||
|
||||
if nWritten > limit*100 {
|
||||
if atomic.LoadInt64(nWritten) > limit*100 {
|
||||
t.Errorf("handler restricted the request body to %d bytes, but client managed to write %d",
|
||||
limit, nWritten)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user