Commit 7ac507d9 authored by Ruslan Drozhdzh's avatar Ruslan Drozhdzh Committed by Miek Gieben

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
parent 38e27fd9
...@@ -2,6 +2,7 @@ package forward ...@@ -2,6 +2,7 @@ package forward
import ( import (
"crypto/tls" "crypto/tls"
"runtime"
"sync/atomic" "sync/atomic"
"time" "time"
...@@ -36,6 +37,7 @@ func NewProxy(addr string, tlsConfig *tls.Config) *Proxy { ...@@ -36,6 +37,7 @@ func NewProxy(addr string, tlsConfig *tls.Config) *Proxy {
avgRtt: int64(timeout / 2), avgRtt: int64(timeout / 2),
} }
p.client = dnsClient(tlsConfig) p.client = dnsClient(tlsConfig)
runtime.SetFinalizer(p, (*Proxy).finalizer)
return p return p
} }
...@@ -91,6 +93,9 @@ func (p *Proxy) Down(maxfails uint32) bool { ...@@ -91,6 +93,9 @@ func (p *Proxy) Down(maxfails uint32) bool {
// close stops the health checking goroutine. // close stops the health checking goroutine.
func (p *Proxy) close() { func (p *Proxy) close() {
p.probe.Stop() p.probe.Stop()
}
func (p *Proxy) finalizer() {
p.transport.Stop() p.transport.Stop()
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment