]> Cypherpunks repositories - gostls13.git/commit
net/http/httputil: fix race/crash in previous ReverseProxy change
authorBrad Fitzpatrick <bradfitz@golang.org>
Tue, 9 Oct 2018 23:01:20 +0000 (16:01 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 10 Oct 2018 02:08:36 +0000 (02:08 +0000)
commitc870d56f98eab5370726afd223fe0ab14d9e88ab
tree090011f3cc0598e48818311c36fba465d47b99e5
parent95d06ab6c982f58b127b14a52c3325acf0bd3926
net/http/httputil: fix race/crash in previous ReverseProxy change

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: Dmitri Shuralyov <dmitshur@golang.org>
src/net/http/httputil/reverseproxy.go