proxy: Fix connection leak when client disconnect
established connections were leaked when client disconnected before proxyreq completes. This happens all time for wait=true requests.release-2.1
parent
2299e35d99
commit
a68efe7d1e
|
@ -73,6 +73,25 @@ func (p *reverseProxy) ServeHTTP(rw http.ResponseWriter, clientreq *http.Request
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
completeCh := make(chan bool, 1)
|
||||||
|
closeNotifier, ok := rw.(http.CloseNotifier)
|
||||||
|
if ok {
|
||||||
|
go func() {
|
||||||
|
select {
|
||||||
|
case <-closeNotifier.CloseNotify():
|
||||||
|
tp, ok := p.transport.(*http.Transport)
|
||||||
|
if ok {
|
||||||
|
tp.CancelRequest(proxyreq)
|
||||||
|
}
|
||||||
|
case <-completeCh:
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
completeCh <- true
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
var res *http.Response
|
var res *http.Response
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue