summaryrefslogtreecommitdiffstats
path: root/deluge/core/core.py
diff options
context:
space:
mode:
authorCalum Lind <calumlind+deluge@gmail.com>2018-09-25 11:41:15 +0100
committerCalum Lind <calumlind+deluge@gmail.com>2018-09-26 14:18:52 +0100
commit5a2990ff903cc4c4e7b72037b7ea9e4d0c74fafe (patch)
tree08595ffe8b9dd1a61b8f1eedbfcade5ac6d5db8c /deluge/core/core.py
parent759a618f7434379c817f8f42b9a97d7e443587da (diff)
downloaddeluge-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.py13
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):