From: Matt Joiner <anacrolix@gmail.com>
Date: Tue, 18 Nov 2014 20:34:13 +0000 (-0600)
Subject: Adding a duplicate magnet returns the existing torrent
X-Git-Tag: v1.0.0~1512
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=1057ac80559d99eb88c639011a8f390da567893b;p=btrtrc.git

Adding a duplicate magnet returns the existing torrent
---

diff --git a/client.go b/client.go
index 3979b396..5c1223c4 100644
--- a/client.go
+++ b/client.go
@@ -1229,13 +1229,17 @@ func (cl *Client) AddMagnet(uri string) (t *torrent, err error) {
 	if err != nil {
 		return
 	}
+	cl.mu.Lock()
+	defer cl.mu.Unlock()
+	t = cl.torrent(m.InfoHash)
+	if t != nil {
+		return
+	}
 	t, err = newTorrent(m.InfoHash, [][]string{m.Trackers}, cl.halfOpenLimit)
 	if err != nil {
 		return
 	}
 	t.DisplayName = m.DisplayName
-	cl.mu.Lock()
-	defer cl.mu.Unlock()
 	err = cl.addTorrent(t)
 	if err != nil {
 		t.Close()