• Brad Fitzpatrick's avatar
    net/http/httputil: fix race/crash in previous ReverseProxy change · c870d56f
    Brad Fitzpatrick authored
    The previous ReverseProxy change, CL 137335, introduced a bug which could cause
    a race and/or a crash.
    
    This reliably crashed before:
    
    $ go test -short -race -v -run=TestReverseProxyFlushInterval -count=20 net/http/httputil
    
    The problem was a goroutine was running http.ResponseWriter.Flush
    after the http.Handler's ServeHTTP completed. There was code to
    prevent that (a deferred stop call) but the stop call didn't consider
    the case where time.AfterFunc had already fired off a new goroutine
    but that goroutine hadn't yet scheduled.
    
    Change-Id: I06357908465a3b953efc33e63c70dec19a501adf
    Reviewed-on: https://go-review.googlesource.com/c/140977
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarDmitri Shuralyov <dmitshur@golang.org>
    c870d56f
Name
Last commit
Last update
..
cgi Loading commit data...
cookiejar Loading commit data...
fcgi Loading commit data...
httptest Loading commit data...
httptrace Loading commit data...
httputil Loading commit data...
internal Loading commit data...
pprof Loading commit data...
testdata Loading commit data...
client.go Loading commit data...
client_test.go Loading commit data...
clientserver_test.go Loading commit data...
cookie.go Loading commit data...
cookie_test.go Loading commit data...
doc.go Loading commit data...
example_filesystem_test.go Loading commit data...
example_handle_test.go Loading commit data...
example_test.go Loading commit data...
export_test.go Loading commit data...
filetransport.go Loading commit data...
filetransport_test.go Loading commit data...
fs.go Loading commit data...
fs_test.go Loading commit data...
h2_bundle.go Loading commit data...
header.go Loading commit data...
header_test.go Loading commit data...
http.go Loading commit data...
http_test.go Loading commit data...
jar.go Loading commit data...
main_test.go Loading commit data...
method.go Loading commit data...
npn_test.go Loading commit data...
proxy_test.go Loading commit data...
range_test.go Loading commit data...
readrequest_test.go Loading commit data...
request.go Loading commit data...
request_test.go Loading commit data...
requestwrite_test.go Loading commit data...
response.go Loading commit data...
response_test.go Loading commit data...
responsewrite_test.go Loading commit data...
roundtrip.go Loading commit data...
roundtrip_js.go Loading commit data...
serve_test.go Loading commit data...
server.go Loading commit data...
sniff.go Loading commit data...
sniff_test.go Loading commit data...
socks_bundle.go Loading commit data...
status.go Loading commit data...
transfer.go Loading commit data...
transfer_test.go Loading commit data...
transport.go Loading commit data...
transport_internal_test.go Loading commit data...
transport_test.go Loading commit data...
triv.go Loading commit data...