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_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