diff --git a/deluge/core/core.py b/deluge/core/core.py index 92c6defce..6f3cb5670 100644 --- a/deluge/core/core.py +++ b/deluge/core/core.py @@ -84,10 +84,13 @@ class Core(component.Component): while len(version) < 4: version.append(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) + # In libtorrent versions below 0.16.7.0 disable extension bindings due to GIL issue. + # https://code.google.com/p/libtorrent/issues/detail?id=369 + if deluge.common.VersionSplit(lt.version) >= deluge.common.VersionSplit("0.16.7.0"): + self.session = lt.session(lt.fingerprint("DE", *version), flags=0) + else: + # 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() @@ -108,11 +111,12 @@ class Core(component.Component): self.session.set_settings(self.settings) # Load metadata extension - # 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) + # In libtorrent versions below 0.16.7.0 disable extension bindings due to GIL issue. + # https://code.google.com/p/libtorrent/issues/detail?id=369 + if deluge.common.VersionSplit(lt.version) >= deluge.common.VersionSplit("0.16.7.0"): + self.session.add_extension("metadata_transfer") + self.session.add_extension("ut_metadata") + self.session.add_extension("smart_ban") # Create the components self.eventmanager = EventManager() diff --git a/deluge/core/preferencesmanager.py b/deluge/core/preferencesmanager.py index eee384a83..03a672e4e 100644 --- a/deluge/core/preferencesmanager.py +++ b/deluge/core/preferencesmanager.py @@ -337,11 +337,10 @@ class PreferencesManager(component.Component): def _on_set_utpex(self, key, value): log.debug("utpex value set to %s", value) - if value: - # 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 + # In libtorrent versions below 0.16.7.0 disable extension bindings due to GIL issue. + # https://code.google.com/p/libtorrent/issues/detail?id=369 + if value and deluge.common.VersionSplit(lt.version) >= deluge.common.VersionSplit("0.16.7.0"): + self.session.add_extension("ut_pex") def _on_set_encryption(self, key, value): log.debug("encryption value %s set to %s..", key, value)