[Core] Move add tracker merge into Torrent method

This commit is contained in:
Calum Lind 2015-10-01 19:15:02 +01:00
commit cb8e9d3018
2 changed files with 16 additions and 10 deletions

View file

@ -591,6 +591,20 @@ class Torrent(object):
""" """
self.tracker_status = status self.tracker_status = status
def merge_trackers(self, torrent_info):
"""Merges new trackers in torrent_info into torrent"""
log.info("Adding any new trackers to torrent (%s) already in session...", self.torrent_id)
if not torrent_info:
return
# Don't merge trackers if either torrent has private flag set.
if torrent_info.priv() or self.get_status(["private"])["private"]:
log.info("Adding trackers aborted: Torrent has private flag set.")
else:
for tracker in torrent_info.trackers():
self.handle.add_tracker({"url": tracker.url, "tier": tracker.tier})
# Update torrent.trackers from libtorrent handle.
self.set_trackers()
def update_state(self): def update_state(self):
"""Updates the state, based on libtorrent's torrent state""" """Updates the state, based on libtorrent's torrent state"""
status = self.handle.status() status = self.handle.status()

View file

@ -337,16 +337,8 @@ class TorrentManager(component.Component):
# Check for existing torrent in session. # Check for existing torrent in session.
if torrent_id in self.get_torrent_list(): if torrent_id in self.get_torrent_list():
log.warning("Unable to add torrent (%s), already in session", torrent_id) log.warning("Unable to add torrent (%s), already in session", torrent_id)
if torrent_info: # Attempt merge trackers before returning.
log.info("Adding any new trackers to torrent (%s) already in session...", torrent_id) self.torrents[torrent_id].merge_trackers(torrent_info)
# Don't merge trackers if either torrent has private flag set.
if torrent_info.priv() or self[torrent_id].get_status(["private"])["private"]:
log.info("Adding trackers aborted: Torrent has private flag set.")
else:
for tracker in torrent_info.trackers():
self[torrent_id].handle.add_tracker({"url": tracker.url, "tier": tracker.tier})
# Update torrent.trackers from lt.
self[torrent_id].set_trackers()
return return
# Load default options and update if needed. # Load default options and update if needed.