• Brad Fitzpatrick's avatar
    net/http: fix another data race when sharing Request.Body · 9b0560ea
    Brad Fitzpatrick authored
    Fix another issue (similar to Issue 6995) where there was a
    data race when sharing a server handler's Request.Body with
    another goroutine that out-lived the Handler's goroutine.
    
    In some cases we were not closing the incoming Request.Body
    (which would've required reading it until the end) if we
    thought it we thought we were going to be forcibly closing the
    underlying net.Conn later anyway. But that optimization
    largely moved to the transfer.go *body later, and locking was
    added to *body which then detected read-after-close, so now
    calling the (*body).Close always is both cheap and correct.
    
    No new test because TestTransportAndServerSharedBodyRace caught it,
    albeit only sometimes. Running:
    
    while ./http.test -test.cpu=8 -test.run=TestTransportAndServerSharedBodyRace; do true; done
    
    ... would reliably cause a race before, but not now.
    
    Update #6995
    Fixes #7092
    
    R=golang-codereviews, khr
    CC=golang-codereviews
    https://golang.org/cl/51700043
    9b0560ea
Name
Last commit
Last update
api Loading commit data...
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...