libtorrent compatibility fixes

This commit is contained in:
Kai Huuhko 2016-09-19 15:00:08 +03:00
parent 09440577a0
commit c8344819e0
1 changed files with 24 additions and 4 deletions

View File

@ -77,7 +77,7 @@ def read_resume_data(info_hash):
t_path = os.path.join(p, "%s.fastresume" % info_hash)
if os.path.exists(t_path):
with open(t_path, "rb") as fp:
data = lt.read_resume_data(fp.read())
data = fp.read()
break
if data:
@ -86,6 +86,12 @@ def read_resume_data(info_hash):
raise ValueError("Fast Resume data not found")
def lt_compatibility_convert(params):
for k, v in params.items():
if type(v) == lt.sha1_hash:
params[k] = v.to_bytes()
class Session(lt.session):
def __init__(self, conf, shutdown_cb):
@ -283,6 +289,7 @@ class Session(lt.session):
params_dict = torrent.get_params()
params = None
ti = None
if "ti" in params_dict and params_dict["ti"]:
try:
@ -291,15 +298,28 @@ class Session(lt.session):
log.exception("Opening torrent %s failed", info_hash)
else:
params_dict["ti"] = ti
if ti:
if lt_version < LooseVersion("1.2.0.0"):
try:
params = read_resume_data(info_hash)
data = read_resume_data(info_hash)
except Exception:
pass
log.exception("Reading resume data failed.")
else:
params_dict["resume_data"] = data
else:
try:
data = read_resume_data(info_hash)
params = lt.read_resume_data(data)
except Exception:
log.exception("Reading resume data failed.")
else:
params.trackers = list(set(params.trackers))
if lt_version < LooseVersion("1.1.1.0"):
if lt_version < LooseVersion("1.2.0.0"):
if params is None:
log.warn("Falling back to < lt 1.2 compatibility handling.")
lt_compatibility_convert(params_dict)
params = params_dict
else:
if params is None: