summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Resch <andrewresch@gmail.com>2009-01-24 05:25:37 +0000
committerAndrew Resch <andrewresch@gmail.com>2009-01-24 05:25:37 +0000
commitd268ed49559fd9f8de568d698bb4c40b5a6b2d83 (patch)
treecb84865119f5413331c245d6a47eb286fe6e77fd
parent7376a1e125e528465d09282fc199f53f90e1519f (diff)
downloaddeluge-d268ed49559fd9f8de568d698bb4c40b5a6b2d83.tar.gz
deluge-d268ed49559fd9f8de568d698bb4c40b5a6b2d83.tar.bz2
deluge-d268ed49559fd9f8de568d698bb4c40b5a6b2d83.zip
Fix setting outgoing ports
-rw-r--r--ChangeLog1
-rw-r--r--deluge/core/preferencesmanager.py3
-rwxr-xr-xlibtorrent/bindings/python/src/converters.cpp48
-rwxr-xr-xlibtorrent/bindings/python/src/module.cpp3
-rwxr-xr-xlibtorrent/bindings/python/src/session.cpp4
-rwxr-xr-xlibtorrent/bindings/python/src/session_settings.cpp1
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 <boost/python.hpp>
+using namespace boost::python;
+
+template<class T1, class T2>
+struct pair_to_tuple
+{
+ static PyObject* convert(const std::pair<T1, T2>& p)
+ {
+ return incref(make_tuple(p.first, p.second).ptr());
+ }
+};
+
+template<class T1, class T2>
+struct tuple_to_pair
+{
+ tuple_to_pair()
+ {
+ converter::registry::push_back(
+ &convertible, &construct, type_id<std::pair<T1, T2> >()
+ );
+ }
+
+ 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<T1, T2> >*)data)->storage.bytes;
+
+ object o(borrowed(x));
+ std::pair<T1, T2> p;
+ p.first = extract<T1>(o[0]);
+ p.second = extract<T2>(o[1]);
+ new (storage) std::pair<T1, T2>(p);
+ data->convertible = storage;
+ }
+};
+
+void bind_converters()
+{
+ to_python_converter<std::pair<int, int>, pair_to_tuple<int, int> >();
+ tuple_to_pair<int, int>();
+}
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<copy_const_reference>())
#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<copy_const_reference>())
+ .def("tracker_proxy", allow_threads(&session::tracker_proxy), return_value_policy<copy_const_reference>())
+ .def("web_seed_proxy", allow_threads(&session::web_seed_proxy), return_value_policy<copy_const_reference>())
.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