mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-08-08 11:12:31 +00:00
Improved listen/dht port handling and added 'dht.override_port.set' command.
This commit is contained in:
@@ -177,8 +177,8 @@ initialize_command_network() {
|
||||
CMD2_VAR_BOOL ("network.port_random", true);
|
||||
CMD2_VAR_STRING ("network.port_range", "6881-6999");
|
||||
|
||||
CMD2_ANY ("network.listen.port", std::bind(&torrent::ConnectionManager::listen_port, cm));
|
||||
CMD2_ANY ("network.listen.backlog", std::bind(&torrent::ConnectionManager::listen_backlog, cm));
|
||||
CMD2_ANY ("network.listen.port", std::bind(&torrent::net::NetworkConfig::listen_port, network_config));
|
||||
CMD2_ANY ("network.listen.backlog", std::bind(&torrent::net::NetworkConfig::listen_backlog, network_config));
|
||||
CMD2_ANY_VALUE_V ("network.listen.backlog.set", std::bind(&torrent::ConnectionManager::set_listen_backlog, cm, std::placeholders::_2));
|
||||
|
||||
CMD2_VAR_BOOL ("protocol.pex", true);
|
||||
|
||||
+13
-7
@@ -3,8 +3,7 @@
|
||||
#include <cassert>
|
||||
#include <cstdio>
|
||||
#include <netdb.h>
|
||||
#include <rak/address_info.h>
|
||||
#include <rak/error_number.h>
|
||||
#include <torrent/net/network_config.h>
|
||||
#include <torrent/net/resolver.h>
|
||||
#include <torrent/tracker/dht_controller.h>
|
||||
#include <torrent/tracker/tracker.h>
|
||||
@@ -142,11 +141,18 @@ initialize_command_tracker() {
|
||||
CMD2_VAR_VALUE ("trackers.numwant", -1);
|
||||
CMD2_VAR_BOOL ("trackers.use_udp", true);
|
||||
|
||||
auto dht_manager = control->dht_manager();
|
||||
|
||||
CMD2_ANY_STRING_V ("dht.mode.set", std::bind(&core::DhtManager::set_mode, control->dht_manager(), std::placeholders::_2));
|
||||
// TODO: This should query DhtController.
|
||||
CMD2_VAR_VALUE ("dht.port", int64_t(6881));
|
||||
CMD2_ANY ("dht.port", std::bind(&torrent::tracker::DhtController::port, torrent::dht_controller()));
|
||||
CMD2_ANY_VALUE_V ("dht.port.set", [](auto, auto) {
|
||||
lt_log_print(torrent::LOG_DHT_ERROR, "dht.port.set is no longer supported, use dht.override_port.set", 0);
|
||||
});
|
||||
CMD2_ANY ("dht.override_port", std::bind(&torrent::net::NetworkConfig::override_dht_port, torrent::config::network_config()));
|
||||
CMD2_ANY_VALUE_V ("dht.override_port.set", std::bind(&torrent::net::NetworkConfig::set_override_dht_port, torrent::config::network_config(), std::placeholders::_2));
|
||||
|
||||
CMD2_ANY_STRING ("dht.add_node", std::bind(&apply_dht_add_node, std::placeholders::_2));
|
||||
CMD2_ANY ("dht.statistics", std::bind(&core::DhtManager::dht_statistics, control->dht_manager()));
|
||||
CMD2_ANY ("dht.throttle.name", std::bind(&core::DhtManager::throttle_name, control->dht_manager()));
|
||||
CMD2_ANY_STRING_V ("dht.throttle.name.set", std::bind(&core::DhtManager::set_throttle_name, control->dht_manager(), std::placeholders::_2));
|
||||
CMD2_ANY ("dht.statistics", std::bind(&core::DhtManager::dht_statistics, dht_manager));
|
||||
CMD2_ANY ("dht.throttle.name", std::bind(&core::DhtManager::throttle_name, dht_manager));
|
||||
CMD2_ANY_STRING_V ("dht.throttle.name.set", std::bind(&core::DhtManager::set_throttle_name, dht_manager, std::placeholders::_2));
|
||||
}
|
||||
|
||||
@@ -69,8 +69,6 @@ Control::initialize() {
|
||||
m_core->download_store()->enable(rpc::call_command_value("session.use_lock"));
|
||||
m_core->set_hashing_view(*m_viewManager->find_throw("hashing"));
|
||||
|
||||
m_dhtManager->set_port(torrent::connection_manager()->listen_port());
|
||||
|
||||
m_ui->init(this);
|
||||
|
||||
if(!display::Canvas::daemon())
|
||||
|
||||
+1
-18
@@ -33,16 +33,6 @@ DhtManager::~DhtManager() {
|
||||
torrent::this_thread::scheduler()->erase(&m_stop_timeout);
|
||||
}
|
||||
|
||||
void
|
||||
DhtManager::set_port(uint16_t port) {
|
||||
if (torrent::dht_controller()->is_active()) {
|
||||
LT_LOG_ERROR("cannot change port while DHT is active", 0);
|
||||
throw torrent::input_error("cannot change port while DHT is active");
|
||||
}
|
||||
|
||||
m_port = port;
|
||||
}
|
||||
|
||||
void
|
||||
DhtManager::load_dht_cache() {
|
||||
if (m_start == dht_disable || !control->core()->download_store()->is_enabled()) {
|
||||
@@ -95,14 +85,7 @@ DhtManager::start_dht() {
|
||||
torrent::dht_controller()->set_upload_throttle(throttles.first);
|
||||
torrent::dht_controller()->set_download_throttle(throttles.second);
|
||||
|
||||
if (m_port <= 0) {
|
||||
LT_LOG("server start skipped, port not set", 0);
|
||||
return;
|
||||
}
|
||||
|
||||
LT_LOG("starting server : port=%" PRIu16, m_port);
|
||||
|
||||
if (!torrent::dht_controller()->start(m_port)) {
|
||||
if (!torrent::dht_controller()->start()) {
|
||||
m_start = dht_off;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -10,9 +10,6 @@ class DhtManager {
|
||||
public:
|
||||
~DhtManager();
|
||||
|
||||
uint16_t port() const { return m_port; }
|
||||
void set_port(uint16_t port);
|
||||
|
||||
void load_dht_cache();
|
||||
void save_dht_cache();
|
||||
torrent::Object dht_statistics();
|
||||
@@ -49,9 +46,7 @@ private:
|
||||
torrent::utils::SchedulerEntry m_stop_timeout;
|
||||
|
||||
bool m_warned{};
|
||||
|
||||
int m_start{dht_off};
|
||||
uint16_t m_port{0};
|
||||
|
||||
std::string m_throttleName;
|
||||
};
|
||||
|
||||
+1
-1
@@ -196,7 +196,7 @@ Manager::set_bind_address(const std::string& addr) {
|
||||
|
||||
try {
|
||||
|
||||
if (torrent::connection_manager()->listen_port() != 0) {
|
||||
if (torrent::connection_manager()->is_listen_open()) {
|
||||
torrent::connection_manager()->listen_close();
|
||||
torrent::config::network_config()->set_bind_address(ai->address()->c_sockaddr());
|
||||
|
||||
|
||||
@@ -384,7 +384,7 @@ print_status_info(char* first, char* last) {
|
||||
|
||||
first = print_buffer(first, last, " KB]");
|
||||
|
||||
first = print_buffer(first, last, " [Port: %i]", (unsigned int)torrent::connection_manager()->listen_port());
|
||||
first = print_buffer(first, last, " [Port: %i]", (unsigned int)torrent::config::network_config()->listen_port());
|
||||
|
||||
auto local_address = torrent::config::network_config()->local_address();
|
||||
|
||||
|
||||
@@ -392,7 +392,6 @@ main(int argc, char** argv) {
|
||||
CMD2_REDIRECT ("port_range", "network.port_range.set");
|
||||
|
||||
CMD2_REDIRECT_GENERIC("dht", "dht.mode.set");
|
||||
CMD2_REDIRECT_GENERIC("dht_port", "dht.port.set");
|
||||
|
||||
CMD2_REDIRECT ("port_random", "network.port_random.set");
|
||||
CMD2_REDIRECT ("proxy_address", "network.proxy_address.set");
|
||||
|
||||
Reference in New Issue
Block a user