You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-p2p/deluge/files/deluge-2.0.3-fix-pickle.patch

144 lines
3.8 KiB

https://dev.deluge-torrent.org/changeset/23b3f144fce3424ae
Index: deluge/core/torrentmanager.py
===================================================================
--- deluge-2.0.3/deluge/core/torrentmanager.py (revision 8b62e50eb8bf81a177c4d62484a44b766c6f54a6)
+++ deluge-2.0.3/deluge/core/torrentmanager.py (revision 23b3f144fce3424ae874d54a659cb7b8dd624ade)
@@ -26,5 +26,5 @@
import deluge.component as component
from deluge._libtorrent import lt
-from deluge.common import archive_files, decode_bytes, get_magnet_info, is_magnet
+from deluge.common import PY2, archive_files, decode_bytes, get_magnet_info, is_magnet
from deluge.configmanager import ConfigManager, get_config_dir
from deluge.core.authmanager import AUTH_LEVEL_ADMIN
@@ -810,5 +810,8 @@
try:
with open(filepath, 'rb') as _file:
- state = pickle.load(_file)
+ if PY2:
+ state = pickle.load(_file)
+ else:
+ state = pickle.load(_file, encoding='utf8')
except (IOError, EOFError, pickle.UnpicklingError) as ex:
message = 'Unable to load {}: {}'.format(filepath, ex)
Index: deluge/tests/data/utf8_filename_torrents.state
===================================================================
--- deluge-2.0.3/deluge/tests/data/utf8_filename_torrents.state (revision 23b3f144fce3424ae874d54a659cb7b8dd624ade)
+++ deluge-2.0.3/deluge/tests/data/utf8_filename_torrents.state (revision 23b3f144fce3424ae874d54a659cb7b8dd624ade)
@@ -0,0 +1,85 @@
+(ideluge.core.torrentmanager
+TorrentManagerState
+p1
+(dp2
+S'torrents'
+p3
+(lp4
+(ideluge.core.torrentmanager
+TorrentState
+p5
+(dp6
+S'max_download_speed'
+p7
+I-1
+sS'move_completed_path'
+p8
+S'/home/calum/Downloads'
+p9
+sS'paused'
+p10
+I00
+sS'max_upload_slots'
+p11
+I-1
+sS'prioritize_first_last'
+p12
+I00
+sS'max_connections'
+p13
+I-1
+sS'compact'
+p14
+I00
+sS'queue'
+p15
+I0
+sS'file_priorities'
+p16
+(lp17
+I4
+asS'filename'
+p18
+S'\xc2\xa2.torrent'
+p19
+sS'max_upload_speed'
+p20
+I-1
+sS'save_path'
+p21
+S'/home/calum/Downloads'
+p22
+sS'time_added'
+p23
+F1573563097.749759
+sS'total_uploaded'
+p24
+I0
+sS'torrent_id'
+p25
+S'80d81d55ef3b85f3c1b634c362e014b35594dc71'
+p26
+sS'auto_managed'
+p27
+I01
+sS'stop_at_ratio'
+p28
+I00
+sS'move_completed'
+p29
+I00
+sS'trackers'
+p30
+(lp31
+sS'magnet'
+p32
+NsS'remove_at_ratio'
+p33
+I00
+sS'stop_ratio'
+p34
+F2
+sS'is_finished'
+p35
+I00
+sbasb.
Index: deluge/tests/test_torrentmanager.py
===================================================================
--- deluge-2.0.3/deluge/tests/test_torrentmanager.py (revision c6b6902e9f3e37f5b15184eb509b48b43817a331)
+++ deluge-2.0.3/deluge/tests/test_torrentmanager.py (revision 23b3f144fce3424ae874d54a659cb7b8dd624ade)
@@ -8,4 +8,6 @@
from __future__ import unicode_literals
+import os
+import shutil
import warnings
from base64 import b64encode
@@ -29,5 +31,5 @@
class TorrentmanagerTestCase(BaseTestCase):
def set_up(self):
- common.set_tmp_config_dir()
+ self.config_dir = common.set_tmp_config_dir()
self.rpcserver = RPCServer(listen=False)
self.core = Core()
@@ -119,2 +121,11 @@
InvalidTorrentError, self.tm.remove, 'torrentidthatdoesntexist'
)
+
+ def test_open_state_from_python2(self):
+ """Open a Python2 state with a UTF-8 encoded torrent filename."""
+ shutil.copy(
+ common.get_test_data_file('utf8_filename_torrents.state'),
+ os.path.join(self.config_dir, 'state', 'torrents.state'),
+ )
+ state = self.tm.open_state()
+ self.assertEqual(len(state.torrents), 1)