Module: deluge
Branch: 1.3-stable
Commit: b5a0f32826c2902a234e908f9e06732065441622

Author: Calum Lind <[email protected]>
Date:   Thu Jun 30 17:19:41 2011 +0100

Fix append trackers error occuring with magnet uris

---

 deluge/core/torrentmanager.py |   58 ++++++++++++++++++++--------------------
 1 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/deluge/core/torrentmanager.py b/deluge/core/torrentmanager.py
index ebdc96b..cd55048 100644
--- a/deluge/core/torrentmanager.py
+++ b/deluge/core/torrentmanager.py
@@ -374,7 +374,35 @@ class TorrentManager(component.Component):
 
             add_torrent_params["resume_data"] = resume_data
         else:
-            # We have a torrent_info object so we're not loading from state.
+            # We have a torrent_info object or magnet uri so we're not loading 
from state.
+            if torrent_info:
+                add_torrent_id = str(torrent_info.info_hash())
+                if add_torrent_id in self.get_torrent_list():
+                    # Torrent already exists just append any extra trackers.
+                    log.debug("Torrent (%s) exists, checking for trackers to 
add...", add_torrent_id)
+                    add_torrent_trackers = []
+                    for value in torrent_info.trackers():
+                        tracker = {}
+                        tracker["url"] = value.url
+                        tracker["tier"] = value.tier
+                        add_torrent_trackers.append(tracker)
+
+                    torrent_trackers = {}
+                    tracker_list = []
+                    for tracker in  
self[add_torrent_id].get_status(["trackers"])["trackers"]:
+                        torrent_trackers[(tracker["url"])] = tracker
+                        tracker_list.append(tracker)
+
+                    added_tracker = False
+                    for tracker in add_torrent_trackers:
+                        if tracker['url'] not in torrent_trackers:
+                            tracker_list.append(tracker)
+                            added_tracker = True
+
+                    if added_tracker:
+                        self[add_torrent_id].set_trackers(tracker_list)
+                    return
+
             # Check if options is None and load defaults
             if options == None:
                 options = TorrentOptions()
@@ -409,34 +437,6 @@ class TorrentManager(component.Component):
         add_torrent_params["auto_managed"] = False
         add_torrent_params["duplicate_is_error"] = True
 
-        # If torrent already exists just append any extra trackers.
-        if state is None:
-            add_torrent_id = str(add_torrent_params["ti"].info_hash())
-            if add_torrent_id in self.get_torrent_list():
-                log.debug("Torrent (%s) exists, checking for trackers to 
add...", add_torrent_id)
-                add_torrent_trackers = []
-                for value in add_torrent_params["ti"].trackers():
-                    tracker = {}
-                    tracker["url"] = value.url
-                    tracker["tier"] = value.tier
-                    add_torrent_trackers.append(tracker)
-
-                torrent_trackers = {}
-                tracker_list = []
-                for tracker in  
self[add_torrent_id].get_status(["trackers"])["trackers"]:
-                    torrent_trackers[(tracker["url"])] = tracker
-                    tracker_list.append(tracker)
-
-                added_tracker = False
-                for tracker in add_torrent_trackers:
-                    if tracker['url'] not in torrent_trackers:
-                        tracker_list.append(tracker)
-                        added_tracker = True
-
-                if added_tracker:
-                    self[add_torrent_id].set_trackers(tracker_list)
-                return
-
         # We need to pause the AlertManager momentarily to prevent alerts
         # for this torrent being generated before a Torrent object is created.
         component.pause("AlertManager")

-- 
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en.

Reply via email to