61 lines
2.8 KiB
Plaintext
61 lines
2.8 KiB
Plaintext
|
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
|