From: Matt Joiner <anacrolix@gmail.com>
Date: Mon, 3 Aug 2015 15:15:09 +0000 (+1000)
Subject: Tighten up some potential leaks
X-Git-Tag: v1.0.0~1088
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=f69c51bea3d6f787cd750b33e9ca1b00f2047a56;p=btrtrc.git
Tighten up some potential leaks
Based on some observations of lingering goroutines in unit tests.
---
diff --git a/client.go b/client.go
index f5a52449..efa41e2c 100644
--- a/client.go
+++ b/client.go
@@ -551,14 +551,22 @@ func (cl *Client) stopped() bool {
func (me *Client) Close() {
me.mu.Lock()
defer me.mu.Unlock()
+ select {
+ case <-me.quit:
+ return
+ default:
+ }
close(me.quit)
+ if me.dHT != nil {
+ me.dHT.Close()
+ }
for _, l := range me.listeners {
l.Close()
}
- me.event.Broadcast()
for _, t := range me.torrents {
t.close()
}
+ me.event.Broadcast()
}
var ipv6BlockRange = iplist.Range{Description: "non-IPv4 address"}
@@ -586,6 +594,11 @@ func (cl *Client) waitAccept() {
return
}
}
+ select {
+ case <-cl.quit:
+ return
+ default:
+ }
cl.event.Wait()
}
}