aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugin/forward/persistent.go9
-rw-r--r--plugin/forward/proxy_test.go4
2 files changed, 9 insertions, 4 deletions
diff --git a/plugin/forward/persistent.go b/plugin/forward/persistent.go
index 2f488e485..decac412c 100644
--- a/plugin/forward/persistent.go
+++ b/plugin/forward/persistent.go
@@ -44,7 +44,14 @@ func newTransport(addr string, tlsConfig *tls.Config) *transport {
ret: make(chan connErr),
stop: make(chan bool),
}
- go t.connManager()
+ go func() {
+ t.connManager()
+ // if connManager returns it has been stopped.
+ close(t.stop)
+ close(t.yield)
+ close(t.dial)
+ // close(t.ret) // we can still be dialing and wanting to send back the socket on t.ret
+ }()
return t
}
diff --git a/plugin/forward/proxy_test.go b/plugin/forward/proxy_test.go
index 8c53f3150..e33e274c0 100644
--- a/plugin/forward/proxy_test.go
+++ b/plugin/forward/proxy_test.go
@@ -25,9 +25,7 @@ func TestProxyClose(t *testing.T) {
state := request.Request{W: &test.ResponseWriter{}, Req: req}
ctx := context.TODO()
- repeatCnt := 1000
- for repeatCnt > 0 {
- repeatCnt--
+ for i := 0; i < 100; i++ {
p := NewProxy(s.Addr, nil /* no TLS */)
p.start(hcDuration)