diff --git a/deluge/core/torrent.py b/deluge/core/torrent.py index 5e9ab27d7..b05a25c12 100644 --- a/deluge/core/torrent.py +++ b/deluge/core/torrent.py @@ -353,11 +353,12 @@ class Torrent: # First we check for an error from libtorrent, and set the state to that # if any occurred. - if self.handle.is_paused() and len(self.handle.status().error) > 0: + if len(self.handle.status().error) > 0: # This is an error'd torrent self.state = "Error" self.set_status_message(self.handle.status().error) - self.handle.auto_managed(False) + if self.handle.is_paused(): + self.handle.auto_managed(False) return if ltstate == LTSTATE["Queued"] or ltstate == LTSTATE["Checking"]: diff --git a/deluge/core/torrentmanager.py b/deluge/core/torrentmanager.py index 58dca3b33..745008fea 100644 --- a/deluge/core/torrentmanager.py +++ b/deluge/core/torrentmanager.py @@ -166,6 +166,8 @@ class TorrentManager(component.Component): self.on_alert_file_renamed) self.alerts.register_handler("metadata_received_alert", self.on_alert_metadata_received) + self.alerts.register_handler("file_error_alert", + self.on_alert_file_error) def start(self): # Get the pluginmanager reference @@ -779,3 +781,8 @@ class TorrentManager(component.Component): log.debug("on_alert_metadata_received") torrent = self.torrents[str(alert.handle.info_hash())] torrent.write_torrentfile() + + def on_alert_file_error(self, alert): + log.debug("on_alert_file_error: %s", alert.message()) + torrent = self.torrents[str(alert.handle.info_hash())] + torrent.update_state()