summaryrefslogtreecommitdiffstats
path: root/deluge/core/torrentmanager.py
diff options
context:
space:
mode:
authorCalum Lind <calumlind+deluge@gmail.com>2021-08-23 23:19:36 +0100
committerCalum Lind <calumlind+deluge@gmail.com>2021-08-29 15:58:48 +0100
commit4b6c7d01b2d1d7e0e7a5e47d18cae4ec17b67bda (patch)
tree98f67a68c5a7699ebe83b82f22585a007f71752b /deluge/core/torrentmanager.py
parentb89b2c45b145c33c41115a9aac6e46b085ce668a (diff)
downloaddeluge-4b6c7d01b2d1d7e0e7a5e47d18cae4ec17b67bda.tar.gz
deluge-4b6c7d01b2d1d7e0e7a5e47d18cae4ec17b67bda.tar.bz2
deluge-4b6c7d01b2d1d7e0e7a5e47d18cae4ec17b67bda.zip
[#3478|Core] Fix loading magnet with resume_data and no metadata
Since libtorrent 1.2.10 magnets save resume_data even with metadata not yet downloaded. Unfortunately when using the deprecated add_torrent_params key resume_data results in an error "missing info-hash from URI" The problem is due to lt session requiring an info_hash in add_torrent_params but resume_data does not set or override this key and resume_data overrides the add_torrent_params.url with an empty string. The workaround is to specify the info_hash in add_torrent_params. We require sha1_hash object or bytes and use of bytearray to maintain python2 compatability. https://dev.deluge-torrent.org/ticket/3478
Diffstat (limited to 'deluge/core/torrentmanager.py')
-rw-r--r--deluge/core/torrentmanager.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/deluge/core/torrentmanager.py b/deluge/core/torrentmanager.py
index 7ad837bbe..174a92dae 100644
--- a/deluge/core/torrentmanager.py
+++ b/deluge/core/torrentmanager.py
@@ -441,6 +441,11 @@ class TorrentManager(component.Component):
add_torrent_params['url'] = magnet.strip().encode('utf8')
add_torrent_params['name'] = magnet_info['name']
torrent_id = magnet_info['info_hash']
+ # Workaround lt 1.2 bug for magnet resume data with no metadata
+ if resume_data and VersionSplit(LT_VERSION) >= VersionSplit('1.2.10.0'):
+ add_torrent_params['info_hash'] = bytes(
+ bytearray.fromhex(torrent_id)
+ )
else:
raise AddTorrentError(
'Unable to add magnet, invalid magnet info: %s' % magnet
@@ -1250,7 +1255,7 @@ class TorrentManager(component.Component):
def on_alert_add_torrent(self, alert):
"""Alert handler for libtorrent add_torrent_alert"""
if not alert.handle.is_valid():
- log.warning('Torrent handle is invalid!')
+ log.warning('Torrent handle is invalid: %s', alert.error.message())
return
try: