diff --git a/deluge/core/torrent.py b/deluge/core/torrent.py index 2423635e7..50a05b237 100644 --- a/deluge/core/torrent.py +++ b/deluge/core/torrent.py @@ -179,6 +179,11 @@ class Torrent(object): else: self.time_added = time.time() + # Keep track if we're forcing a recheck of the torrent so that we can + # repause it after its done if necessary + self.forcing_recheck = False + self.forcing_recheck_paused = False + log.debug("Torrent object created.") ## Options methods ## @@ -859,12 +864,15 @@ class Torrent(object): def force_recheck(self): """Forces a recheck of the torrents pieces""" + paused = self.handle.is_paused() try: self.handle.force_recheck() self.handle.resume() except Exception, e: log.debug("Unable to force recheck: %s", e) return False + self.forcing_recheck = True + self.forcing_recheck_paused = paused return True def rename_files(self, filenames): diff --git a/deluge/core/torrentmanager.py b/deluge/core/torrentmanager.py index 5e137c6fd..4ce881c22 100644 --- a/deluge/core/torrentmanager.py +++ b/deluge/core/torrentmanager.py @@ -849,7 +849,14 @@ class TorrentManager(component.Component): torrent = self.torrents[str(alert.handle.info_hash())] except: return - + + # Check to see if we're forcing a recheck and set it back to paused + # if necessary + if torrent.forcing_recheck: + torrent.forcing_recheck = False + if torrent.forcing_recheck_paused: + torrent.handle.pause() + # Set the torrent state torrent.update_state()