plugin/forward: close connection manager in proxy finalizer (#1768)

- connManager() goroutine will stop when Proxy is about to be
   garbage collected. This means that no queries are in progress,
   and no queries are going to come
This commit is contained in:
Ruslan Drozhdzh
2018-05-18 09:46:14 +03:00
committed by Miek Gieben
parent 38e27fd9ad
commit 7ac507d9ff

View File

@@ -2,6 +2,7 @@ package forward
import (
"crypto/tls"
"runtime"
"sync/atomic"
"time"
@@ -36,6 +37,7 @@ func NewProxy(addr string, tlsConfig *tls.Config) *Proxy {
avgRtt: int64(timeout / 2),
}
p.client = dnsClient(tlsConfig)
runtime.SetFinalizer(p, (*Proxy).finalizer)
return p
}
@@ -91,6 +93,9 @@ func (p *Proxy) Down(maxfails uint32) bool {
// close stops the health checking goroutine.
func (p *Proxy) close() {
p.probe.Stop()
}
func (p *Proxy) finalizer() {
p.transport.Stop()
}