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.
