summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-p2p/deluge/files/deluge-1.3.5-rb_libtorrent-disable-python-bindings')
-rw-r--r--net-p2p/deluge/files/deluge-1.3.5-rb_libtorrent-disable-python-bindings60
1 files changed, 60 insertions, 0 deletions
diff --git a/net-p2p/deluge/files/deluge-1.3.5-rb_libtorrent-disable-python-bindings b/net-p2p/deluge/files/deluge-1.3.5-rb_libtorrent-disable-python-bindings
new file mode 100644
index 000000000000..301019e04aed
--- /dev/null
+++ b/net-p2p/deluge/files/deluge-1.3.5-rb_libtorrent-disable-python-bindings
@@ -0,0 +1,60 @@
+https://bugs.gentoo.org/show_bug.cgi?id=437356
+
+From 37ea2854a21e50debdf7bc953a3411e5934b74d9 Mon Sep 17 00:00:00 2001
+From: Calum Lind <calumlind+deluge@gmail.com>
+Date: Thu, 27 Sep 2012 16:53:22 +0000
+Subject: Fix 2160 : Disable use of python bindings for libtorrent extensions and replace with session flag
+
+The fixes a GIL issue causing libtorrent segfault. https://code.google.com/p/libtorrent/issues/detail?id=369
+
+Note: The ut_pex plugin (Peer Exchange) will now always be enabled.
+---
+diff --git a/deluge/core/core.py b/deluge/core/core.py
+index 4bda811..4ca3d96 100644
+--- a/deluge/core/core.py
++++ b/deluge/core/core.py
+@@ -84,7 +84,10 @@ class Core(component.Component):
+ while len(version) < 4:
+ version.append(0)
+
+- self.session = lt.session(lt.fingerprint("DE", *version), flags=0)
++ # Note: All libtorrent python bindings to set plugins/extensions need to be disabled
++ # due to GIL issue. https://code.google.com/p/libtorrent/issues/detail?id=369
++ # Setting session flags to 1 enables all libtorrent default plugins
++ self.session = lt.session(lt.fingerprint("DE", *version), flags=1)
+
+ # Load the session state if available
+ self.__load_session_state()
+@@ -103,9 +106,11 @@ class Core(component.Component):
+ self.session.set_settings(self.settings)
+
+ # Load metadata extension
+- self.session.add_extension(lt.create_metadata_plugin)
+- self.session.add_extension(lt.create_ut_metadata_plugin)
+- self.session.add_extension(lt.create_smart_ban_plugin)
++ # Note: All libtorrent python bindings to set plugins/extensions need to be disabled
++ # due to GIL issue. https://code.google.com/p/libtorrent/issues/detail?id=369
++ # self.session.add_extension(lt.create_metadata_plugin)
++ # self.session.add_extension(lt.create_ut_metadata_plugin)
++ # self.session.add_extension(lt.create_smart_ban_plugin)
+
+ # Create the components
+ self.eventmanager = EventManager()
+diff --git a/deluge/core/preferencesmanager.py b/deluge/core/preferencesmanager.py
+index 40070bb..2a5cb1b 100644
+--- a/deluge/core/preferencesmanager.py
++++ b/deluge/core/preferencesmanager.py
+@@ -338,7 +338,10 @@ class PreferencesManager(component.Component):
+ def _on_set_utpex(self, key, value):
+ log.debug("utpex value set to %s", value)
+ if value:
+- self.session.add_extension(lt.create_ut_pex_plugin)
++ # Note: All libtorrent python bindings to set plugins/extensions need to be disabled
++ # due to GIL issue. https://code.google.com/p/libtorrent/issues/detail?id=369
++ #self.session.add_extension(lt.create_ut_pex_plugin)
++ pass
+
+ def _on_set_encryption(self, key, value):
+ log.debug("encryption value %s set to %s..", key, value)
+--
+cgit v0.9.0.2