From a76f5f5ed251456d360d332258bcc4937d1c2494 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Wed, 4 May 2016 09:32:26 -0700 Subject: [PATCH] httpproxy: fix race on getting close notifier channel Fixes #5267 --- proxy/httpproxy/reverse.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/proxy/httpproxy/reverse.go b/proxy/httpproxy/reverse.go index e683f0ca2..b7a7c64db 100644 --- a/proxy/httpproxy/reverse.go +++ b/proxy/httpproxy/reverse.go @@ -112,9 +112,10 @@ func (p *reverseProxy) ServeHTTP(rw http.ResponseWriter, clientreq *http.Request closeNotifier, ok := rw.(http.CloseNotifier) cancel := httputil.RequestCanceler(p.transport, proxyreq) if ok { + closeCh := closeNotifier.CloseNotify() go func() { select { - case <-closeNotifier.CloseNotify(): + case <-closeCh: atomic.StoreInt32(&requestClosed, 1) log.Printf("proxy: client %v closed request prematurely", clientreq.RemoteAddr) cancel()