]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Adding a duplicate magnet returns the existing torrent
authorMatt Joiner <anacrolix@gmail.com>
Tue, 18 Nov 2014 20:34:13 +0000 (14:34 -0600)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 18 Nov 2014 20:34:13 +0000 (14:34 -0600)
client.go

index 3979b3967195315d4204adfaf2b3d425832268c0..5c1223c4146076fc1aca6232e70da3ece8ec9666 100644 (file)
--- 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()