diff --git a/glade/preferences_dialog.glade b/glade/preferences_dialog.glade index 38eb55446..6ed802094 100644 --- a/glade/preferences_dialog.glade +++ b/glade/preferences_dialog.glade @@ -911,7 +911,7 @@ Forced - + True 1 Level: @@ -1751,7 +1751,7 @@ HTTP W/ Auth - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Proxy type @@ -2403,6 +2403,42 @@ HTTP W/ Auth True 2 + + + True + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + True + Have messages will be sent to peers that already have the piece. It adds a little overhead, but allows other clients to see our progress. + Send Redundant Have + 0 + True + + + + + + + True + <b>Peers</b> + True + + + label_item + + + + + False + + True @@ -2548,7 +2584,7 @@ HTTP W/ Auth - + True <b>System Tray</b> True @@ -2561,6 +2597,7 @@ HTTP W/ Auth False 2 + 1 @@ -2601,7 +2638,7 @@ HTTP W/ Auth False False - 1 + 2 @@ -2653,7 +2690,7 @@ HTTP W/ Auth False False - 2 + 3 @@ -2696,7 +2733,7 @@ information is sent. False False - 3 + 4 @@ -2708,7 +2745,7 @@ information is sent. - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Other @@ -2838,7 +2875,7 @@ information is sent. - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Plugins diff --git a/src/core.py b/src/core.py index 6dec828f4..8041d0e94 100644 --- a/src/core.py +++ b/src/core.py @@ -83,6 +83,7 @@ PREF_FUNCTIONS = { "use_lsd" : deluge_core.use_lsd, "use_natpmp" : deluge_core.use_natpmp, "use_utpex" : deluge_core.use_utpex, + "send_redund" : deluge_core.send_redund, } STATE_MESSAGES = (_("Queued"), diff --git a/src/deluge_core.cpp b/src/deluge_core.cpp index 64f79a17b..b1ae82fe0 100644 --- a/src/deluge_core.cpp +++ b/src/deluge_core.cpp @@ -2165,6 +2165,23 @@ std::cout << asctime(timeinfo) << " torrent_use_lsd()" << std::endl; Py_INCREF(Py_None); return Py_None; } +static PyObject *torrent_send_redund(PyObject *self, PyObject *args) +{ +#ifdef DELUGE_CORE_DEBUG +time_t rawtime; +struct tm *timeinfo; +time(&rawtime); +timeinfo = localtime(&rawtime); +std::cout << asctime(timeinfo) << " torrent_send_redund()" << std::endl; +#endif + python_long action; + PyArg_ParseTuple(args, "i", &action); + + M_settings->send_redundant_have = action; + M_ses->set_settings(*M_settings); + Py_INCREF(Py_None); return Py_None; +} + static PyObject *torrent_use_natpmp(PyObject *self, PyObject *args) { #ifdef DELUGE_CORE_DEBUG @@ -2662,6 +2679,7 @@ static PyMethodDef deluge_core_methods[] = {"set_IP_filter", torrent_set_IP_filter, METH_VARARGS, "."}, {"use_upnp", torrent_use_upnp, METH_VARARGS, "."}, {"use_lsd", torrent_use_lsd, METH_VARARGS, "."}, + {"send_redund", torrent_send_redund, METH_VARARGS, "."}, {"use_natpmp", torrent_use_natpmp, METH_VARARGS, "."}, {"use_utpex", torrent_use_utpex, METH_VARARGS, "."}, {"set_ratio", torrent_set_ratio, METH_VARARGS, "."}, diff --git a/src/dialogs.py b/src/dialogs.py index 2220aca3d..53e5d042e 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -90,6 +90,7 @@ class PreferencesDlg: self.glade.get_widget("chk_web_proxy").set_active(self.preferences.get("web_proxy")) self.glade.get_widget("chk_upnp").set_active(self.preferences.get("use_upnp")) self.glade.get_widget("chk_lsd").set_active(self.preferences.get("use_lsd")) + self.glade.get_widget("chk_send_redund").set_active(self.preferences.get("send_redund")) self.glade.get_widget("chk_random_port").set_active(self.preferences.get("random_port")) self.glade.get_widget("chk_natpmp").set_active(self.preferences.get("use_natpmp")) self.glade.get_widget("chk_utpex").set_active(self.preferences.get("use_utpex")) @@ -209,6 +210,7 @@ class PreferencesDlg: self.preferences.set("web_proxy", self.glade.get_widget("chk_web_proxy").get_active()) self.preferences.set("use_upnp", self.glade.get_widget("chk_upnp").get_active()) self.preferences.set("use_lsd", self.glade.get_widget("chk_lsd").get_active()) + self.preferences.set("send_redund", self.glade.get_widget("chk_send_redund").get_active()) self.preferences.set("tracker_proxy_type", self.glade.get_widget("combo_tracker_proxy_type").get_active()) self.preferences.set("dht_proxy_type", self.glade.get_widget("combo_dht_proxy_type").get_active()) self.preferences.set("web_proxy_type", self.glade.get_widget("combo_web_proxy_type").get_active()) diff --git a/src/pref.py b/src/pref.py index 1808263eb..3ffbdd9f1 100644 --- a/src/pref.py +++ b/src/pref.py @@ -44,6 +44,7 @@ if common.windows_check(): "enabled_plugins" : "Torrent Files:Torrent Peers:Torrent Peers:Torrent Notification", "file_manager" : common.FileManager.xdg, "open_folder_stock" : True, + "send_redund" : False, "autoload" : False, "open_folder_location": "", "send_info" : True, @@ -162,6 +163,7 @@ else: "enabled_plugins" : "Torrent Files:Torrent Peers:Torrent Notification", "file_manager" : common.FileManager.xdg, "open_folder_stock" : True, + "send_redund" : False, "autoload" : False, "open_folder_location": "", "send_info" : True,