kuuko pushed a commit to branch master.

http://git.enlightenment.org/apps/epour.git/commit/?id=c8344819e060965bddac5628f0e716e1fe2f0b1f

commit c8344819e060965bddac5628f0e716e1fe2f0b1f
Author: Kai Huuhko <kai.huu...@gmail.com>
Date:   Mon Sep 19 15:00:08 2016 +0300

    libtorrent compatibility fixes
---
 epour/session.py | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/epour/session.py b/epour/session.py
index 32c92a1..29fee9e 100644
--- a/epour/session.py
+++ b/epour/session.py
@@ -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:
+                                data = read_resume_data(info_hash)
+                            except Exception:
+                                log.exception("Reading resume data failed.")
+                            else:
+                                params_dict["resume_data"] = data
+                        else:
                             try:
-                                params = read_resume_data(info_hash)
+                                data = read_resume_data(info_hash)
+                                params = lt.read_resume_data(data)
                             except Exception:
-                                pass
+                                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:

-- 


Reply via email to