From d268ed49559fd9f8de568d698bb4c40b5a6b2d83 Mon Sep 17 00:00:00 2001 From: Andrew Resch Date: Sat, 24 Jan 2009 05:25:37 +0000 Subject: Fix setting outgoing ports --- ChangeLog | 1 + deluge/core/preferencesmanager.py | 3 +- libtorrent/bindings/python/src/converters.cpp | 48 +++++++++++++++++++++- libtorrent/bindings/python/src/module.cpp | 3 +- libtorrent/bindings/python/src/session.cpp | 4 ++ .../bindings/python/src/session_settings.cpp | 1 + 6 files changed, 57 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 238888889..37971f84f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ Deluge 1.1.1 - (In Development) Core: * Fix oldstateupgrader for those upgrading from 0.5.x * Fix setting Peer TOS byte + * Fix setting outgoing ports GtkUI: * Fix opening links from Help menu and others diff --git a/deluge/core/preferencesmanager.py b/deluge/core/preferencesmanager.py index 242275d07..8c495a2e6 100644 --- a/deluge/core/preferencesmanager.py +++ b/deluge/core/preferencesmanager.py @@ -256,7 +256,8 @@ class PreferencesManager(component.Component): def _on_set_outgoing_ports(self, key, value): if not self.config["random_outgoing_ports"]: log.debug("outgoing port range set to %s-%s", value[0], value[1]) - self.session.outgoing_ports(value[0], value[1]) + self.settings.outgoing_ports = value[0], value[1] + self.session.set_settings(self.settings) def _on_set_random_outgoing_ports(self, key, value): if value: diff --git a/libtorrent/bindings/python/src/converters.cpp b/libtorrent/bindings/python/src/converters.cpp index f684cc4f3..cae84be75 100755 --- a/libtorrent/bindings/python/src/converters.cpp +++ b/libtorrent/bindings/python/src/converters.cpp @@ -1,5 +1,51 @@ -// Copyright Daniel Wallin 2007. Use, modification and distribution is +// Copyright Andrew Resch 2009. Use, modification and distribution is // subject to the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#include +using namespace boost::python; + +template +struct pair_to_tuple +{ + static PyObject* convert(const std::pair& p) + { + return incref(make_tuple(p.first, p.second).ptr()); + } +}; + +template +struct tuple_to_pair +{ + tuple_to_pair() + { + converter::registry::push_back( + &convertible, &construct, type_id >() + ); + } + + static void* convertible(PyObject* x) + { + return PyTuple_Check(x) ? x: 0; + } + + static void construct(PyObject* x, converter::rvalue_from_python_stage1_data* data) + { + void* storage = ((converter::rvalue_from_python_storage< + std::pair >*)data)->storage.bytes; + + object o(borrowed(x)); + std::pair p; + p.first = extract(o[0]); + p.second = extract(o[1]); + new (storage) std::pair(p); + data->convertible = storage; + } +}; + +void bind_converters() +{ + to_python_converter, pair_to_tuple >(); + tuple_to_pair(); +} diff --git a/libtorrent/bindings/python/src/module.cpp b/libtorrent/bindings/python/src/module.cpp index 7539449cb..3d0925f47 100755 --- a/libtorrent/bindings/python/src/module.cpp +++ b/libtorrent/bindings/python/src/module.cpp @@ -23,6 +23,7 @@ void bind_torrent(); void bind_peer_info(); void bind_ip_filter(); void bind_magnet_uri(); +void bind_converters(); BOOST_PYTHON_MODULE(libtorrent) { @@ -48,5 +49,5 @@ BOOST_PYTHON_MODULE(libtorrent) bind_peer_info(); bind_ip_filter(); bind_magnet_uri(); + bind_converters(); } - diff --git a/libtorrent/bindings/python/src/session.cpp b/libtorrent/bindings/python/src/session.cpp index 9202079de..5d9e9fddf 100755 --- a/libtorrent/bindings/python/src/session.cpp +++ b/libtorrent/bindings/python/src/session.cpp @@ -300,6 +300,7 @@ void bind_session() .def("stop_dht", allow_threads(&session::stop_dht), session_stop_dht_doc) .def("dht_state", allow_threads(&session::dht_state), session_dht_state_doc) .def("set_dht_proxy", allow_threads(&session::set_dht_proxy)) + .def("dht_proxy", allow_threads(&session::dht_proxy), return_value_policy()) #endif .def("add_torrent", &add_torrent, session_add_torrent_doc) #ifndef TORRENT_NO_DEPRECATE @@ -373,6 +374,9 @@ void bind_session() .def("set_peer_proxy", allow_threads(&session::set_peer_proxy)) .def("set_tracker_proxy", allow_threads(&session::set_tracker_proxy)) .def("set_web_seed_proxy", allow_threads(&session::set_web_seed_proxy)) + .def("peer_proxy", allow_threads(&session::peer_proxy), return_value_policy()) + .def("tracker_proxy", allow_threads(&session::tracker_proxy), return_value_policy()) + .def("web_seed_proxy", allow_threads(&session::web_seed_proxy), return_value_policy()) .def("start_upnp", &start_upnp, session_start_upnp_doc) .def("stop_upnp", allow_threads(&session::stop_upnp), session_stop_upnp_doc) .def("start_lsd", allow_threads(&session::start_lsd), session_start_lsd_doc) diff --git a/libtorrent/bindings/python/src/session_settings.cpp b/libtorrent/bindings/python/src/session_settings.cpp index 76e078560..8d4974936 100755 --- a/libtorrent/bindings/python/src/session_settings.cpp +++ b/libtorrent/bindings/python/src/session_settings.cpp @@ -45,6 +45,7 @@ void bind_session_settings() .def_readwrite("auto_scraped_interval", &session_settings::auto_scrape_interval) .def_readwrite("peer_tos", &session_settings::peer_tos) .def_readwrite("rate_limit_ip_overhead", &session_settings::rate_limit_ip_overhead) + .def_readwrite("outgoing_ports", &session_settings::outgoing_ports) #ifndef TORRENT_DISABLE_DHT .def_readwrite("use_dht_as_fallback", &session_settings::use_dht_as_fallback) #endif -- cgit