diff options
author | Calum Lind <calumlind+deluge@gmail.com> | 2018-09-25 11:41:15 +0100 |
---|---|---|
committer | Calum Lind <calumlind+deluge@gmail.com> | 2018-09-26 14:18:52 +0100 |
commit | 5a2990ff903cc4c4e7b72037b7ea9e4d0c74fafe (patch) | |
tree | 08595ffe8b9dd1a61b8f1eedbfcade5ac6d5db8c /deluge/core/core.py | |
parent | 759a618f7434379c817f8f42b9a97d7e443587da (diff) | |
download | deluge-5a2990ff903cc4c4e7b72037b7ea9e4d0c74fafe.tar.gz deluge-5a2990ff903cc4c4e7b72037b7ea9e4d0c74fafe.tar.bz2 deluge-5a2990ff903cc4c4e7b72037b7ea9e4d0c74fafe.zip |
[Core] Handle already prefetching magnet metadata
Diffstat (limited to 'deluge/core/core.py')
-rw-r--r-- | deluge/core/core.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/deluge/core/core.py b/deluge/core/core.py index 15024258e..51c9b1fe9 100644 --- a/deluge/core/core.py +++ b/deluge/core/core.py @@ -419,11 +419,16 @@ class Core(component.Component): The metadata is base64 encoded. """ - def on_metadata(result): + def on_metadata(result, result_d): torrent_id, metadata = result - return torrent_id, b64encode(metadata) - - return self.torrentmanager.prefetch_metadata(magnet, timeout).addCallback(on_metadata) + result_d.callback((torrent_id, b64encode(metadata))) + return result + + d = self.torrentmanager.prefetch_metadata(magnet, timeout) + # Use a seperate callback chain to handle existing prefetching magnet. + result_d = defer.Deferred() + d.addBoth(on_metadata, result_d) + return result_d @export def add_torrent_file(self, filename, filedump, options): |