Improved listen/dht port handling and added 'dht.override_port.set' command.

This commit is contained in:
Jari Sundell
2025-09-13 10:51:04 +02:00
committed by GitHub
parent ba1ba3096a
commit 677f8f45c8
8 changed files with 18 additions and 37 deletions
+2 -2
View File
@@ -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
View File
@@ -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));
}
-2
View File
@@ -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
View File
@@ -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;
}
-5
View File
@@ -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
View File
@@ -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());
+1 -1
View File
@@ -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();
-1
View File
@@ -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");