refactor: rename peer_socket_tos to peer_socket_diffserv (#8004)

This commit is contained in:
Yat Ho
2025-12-26 01:05:50 +08:00
committed by GitHub
parent 5602bcc74b
commit 11ead87f8d
16 changed files with 43 additions and 43 deletions

View File

@@ -231,7 +231,7 @@ int parseCommandLine(tr_variant* d, int argc, char const** argv)
break; break;
case 't': case 't':
tr_variantDictAddStr(d, TR_KEY_peer_socket_tos, my_optarg); tr_variantDictAddStr(d, TR_KEY_peer_socket_diffserv, my_optarg);
break; break;
case 'u': case 'u':

View File

@@ -117,7 +117,7 @@ Here is a sample of the three basic types: respectively Boolean, Number and Stri
* **peer_congestion_algorithm:** String. This is documented on https://www.pps.jussieu.fr/~jch/software/bittorrent/tcp-congestion-control.html. * **peer_congestion_algorithm:** String. This is documented on https://www.pps.jussieu.fr/~jch/software/bittorrent/tcp-congestion-control.html.
* **peer_limit_global:** Number (default = 200) * **peer_limit_global:** Number (default = 200)
* **peer_limit_per_torrent:** Number (default = 50) * **peer_limit_per_torrent:** Number (default = 50)
* **peer_socket_tos:** String (default = "le") Set the [DiffServ](https://en.wikipedia.org/wiki/Differentiated_services) parameter for outgoing packets. Allowed values are lowercase DSCP names. See the `tr_tos_t` class from `libtransmission/net.h` for the exact list of possible values. * **peer_socket_diffserv:** String (default = "le") Set the [DiffServ](https://en.wikipedia.org/wiki/Differentiated_services) parameter for outgoing packets. Allowed values are lowercase DSCP names. See the `tr_diffserv_t` class from `libtransmission/net.h` for the exact list of possible values.
* **reqq:** Number (default = 2000) The number of outstanding block requests a peer is allowed to queue in the client. The higher this number, the higher the max possible upload speed towards each peer. * **reqq:** Number (default = 2000) The number of outstanding block requests a peer is allowed to queue in the client. The higher this number, the higher the max possible upload speed towards each peer.
* **sequential_download** Boolean (default = false) Enable sequential download by default when adding torrents. * **sequential_download** Boolean (default = false) Enable sequential download by default when adding torrents.

View File

@@ -305,7 +305,7 @@ auto constexpr SessionKeys = std::array<ApiKey, 157U>{ {
{ TR_KEY_peer_port_random_high, TR_KEY_peer_port_random_high_kebab_APICOMPAT }, { TR_KEY_peer_port_random_high, TR_KEY_peer_port_random_high_kebab_APICOMPAT },
{ TR_KEY_peer_port_random_low, TR_KEY_peer_port_random_low_kebab_APICOMPAT }, { TR_KEY_peer_port_random_low, TR_KEY_peer_port_random_low_kebab_APICOMPAT },
{ TR_KEY_peer_port_random_on_start, TR_KEY_peer_port_random_on_start_kebab_APICOMPAT }, { TR_KEY_peer_port_random_on_start, TR_KEY_peer_port_random_on_start_kebab_APICOMPAT },
{ TR_KEY_peer_socket_tos, TR_KEY_peer_socket_tos_kebab_APICOMPAT }, { TR_KEY_peer_socket_diffserv, TR_KEY_peer_socket_tos_kebab_APICOMPAT },
{ TR_KEY_peers2_6, TR_KEY_peers2_6_kebab_APICOMPAT }, { TR_KEY_peers2_6, TR_KEY_peers2_6_kebab_APICOMPAT },
{ TR_KEY_pex_enabled, TR_KEY_pex_enabled_kebab_APICOMPAT }, { TR_KEY_pex_enabled, TR_KEY_pex_enabled_kebab_APICOMPAT },
{ TR_KEY_port_forwarding_enabled, TR_KEY_port_forwarding_enabled_kebab_APICOMPAT }, { TR_KEY_port_forwarding_enabled, TR_KEY_port_forwarding_enabled_kebab_APICOMPAT },

View File

@@ -111,7 +111,7 @@ int tr_make_listen_socket_ipv6only(tr_socket_t const sock)
// - TCP Sockets // - TCP Sockets
[[nodiscard]] std::optional<tr_tos_t> tr_tos_t::from_string(std::string_view name) [[nodiscard]] std::optional<tr_diffserv_t> tr_diffserv_t::from_string(std::string_view name)
{ {
auto const needle = tr_strlower(tr_strv_strip(name)); auto const needle = tr_strlower(tr_strv_strip(name));
@@ -119,19 +119,19 @@ int tr_make_listen_socket_ipv6only(tr_socket_t const sock)
{ {
if (needle == key) if (needle == key)
{ {
return tr_tos_t(value); return tr_diffserv_t(value);
} }
} }
if (auto value = tr_num_parse<int>(needle); value) if (auto value = tr_num_parse<int>(needle); value)
{ {
return tr_tos_t(*value); return tr_diffserv_t(*value);
} }
return {}; return {};
} }
std::string tr_tos_t::toString() const std::string tr_diffserv_t::toString() const
{ {
for (auto const& [value, key] : Names) for (auto const& [value, key] : Names)
{ {
@@ -144,7 +144,7 @@ std::string tr_tos_t::toString() const
return std::to_string(value_); return std::to_string(value_);
} }
void tr_netSetTOS([[maybe_unused]] tr_socket_t s, [[maybe_unused]] int tos, tr_address_type type) void tr_netSetDiffServ([[maybe_unused]] tr_socket_t s, [[maybe_unused]] int tos, tr_address_type type)
{ {
if (s == TR_BAD_SOCKET) if (s == TR_BAD_SOCKET)
{ {

View File

@@ -637,14 +637,14 @@ void tr_net_close_socket(tr_socket_t fd);
// --- TOS / DSCP // --- TOS / DSCP
/** /**
* A `toString()` / `from_string()` convenience wrapper around the TOS int value * A `toString()` / `from_string()` convenience wrapper around the DiffServ int value
*/ */
class tr_tos_t class tr_diffserv_t
{ {
public: public:
constexpr tr_tos_t() = default; constexpr tr_diffserv_t() = default;
constexpr explicit tr_tos_t(int value) constexpr explicit tr_diffserv_t(int value)
: value_{ value } : value_{ value }
{ {
} }
@@ -655,7 +655,7 @@ public:
return value_; return value_;
} }
[[nodiscard]] static std::optional<tr_tos_t> from_string(std::string_view name); [[nodiscard]] static std::optional<tr_diffserv_t> from_string(std::string_view name);
[[nodiscard]] std::string toString() const; [[nodiscard]] std::string toString() const;
@@ -701,7 +701,7 @@ private:
}; };
// set the IPTOS_ value for the specified socket // set the IPTOS_ value for the specified socket
void tr_netSetTOS(tr_socket_t sock, int tos, tr_address_type type); void tr_netSetDiffServ(tr_socket_t sock, int tos, tr_address_type type);
/** /**
* @brief get a human-representable string representing the network error. * @brief get a human-representable string representing the network error.

View File

@@ -31,7 +31,7 @@ tr_peer_socket::tr_peer_socket(tr_session const* session, tr_socket_address cons
TR_ASSERT(sock != TR_BAD_SOCKET); TR_ASSERT(sock != TR_BAD_SOCKET);
++n_open_sockets; ++n_open_sockets;
session->setSocketTOS(sock, address().type); session->setSocketDiffServ(sock, address().type);
if (auto const& algo = session->peerCongestionAlgorithm(); !std::empty(algo)) if (auto const& algo = session->peerCongestionAlgorithm(); !std::empty(algo))
{ {

View File

@@ -376,7 +376,7 @@ auto constexpr MyStatic = std::array<std::string_view, TR_N_KEYS>{
"peer_port_random_high"sv, // tr_session::Settings "peer_port_random_high"sv, // tr_session::Settings
"peer_port_random_low"sv, // tr_session::Settings "peer_port_random_low"sv, // tr_session::Settings
"peer_port_random_on_start"sv, // rpc, tr_session::Settings "peer_port_random_on_start"sv, // rpc, tr_session::Settings
"peer_socket_tos"sv, // tr_session::Settings "peer_socket_diffserv"sv, // tr_session::Settings
"peers"sv, // rpc "peers"sv, // rpc
"peers2"sv, // .resume "peers2"sv, // .resume
"peers2-6"sv, // .resume "peers2-6"sv, // .resume

View File

@@ -389,7 +389,7 @@ enum // NOLINT(performance-enum-size)
TR_KEY_peer_port_random_high, TR_KEY_peer_port_random_high,
TR_KEY_peer_port_random_low, TR_KEY_peer_port_random_low,
TR_KEY_peer_port_random_on_start, TR_KEY_peer_port_random_on_start,
TR_KEY_peer_socket_tos, TR_KEY_peer_socket_diffserv,
TR_KEY_peers, TR_KEY_peers,
TR_KEY_peers2, TR_KEY_peers2,
TR_KEY_peers2_6_kebab_APICOMPAT, TR_KEY_peers2_6_kebab_APICOMPAT,

View File

@@ -451,11 +451,11 @@ tr_variant from_string(std::string const& val)
// --- // ---
bool to_tos_t(tr_variant const& src, tr_tos_t* tgt) bool to_diffserv_t(tr_variant const& src, tr_diffserv_t* tgt)
{ {
if (auto const val = src.value_if<std::string_view>()) if (auto const val = src.value_if<std::string_view>())
{ {
if (auto const tos = tr_tos_t::from_string(*val); tos) if (auto const tos = tr_diffserv_t::from_string(*val); tos)
{ {
*tgt = *tos; *tgt = *tos;
return true; return true;
@@ -466,14 +466,14 @@ bool to_tos_t(tr_variant const& src, tr_tos_t* tgt)
if (auto const val = src.value_if<int64_t>()) if (auto const val = src.value_if<int64_t>())
{ {
*tgt = tr_tos_t{ static_cast<int>(*val) }; *tgt = tr_diffserv_t{ static_cast<int>(*val) };
return true; return true;
} }
return false; return false;
} }
tr_variant from_tos_t(tr_tos_t const& val) tr_variant from_diffserv_t(tr_diffserv_t const& val)
{ {
return val.toString(); return val.toString();
} }
@@ -540,6 +540,7 @@ void Converters::ensure_default_converters()
[] []
{ {
Converters::add(to_bool, from_bool); Converters::add(to_bool, from_bool);
Converters::add(to_diffserv_t, from_diffserv_t);
Converters::add(to_double, from_double); Converters::add(to_double, from_double);
Converters::add(to_encryption_mode, from_encryption_mode); Converters::add(to_encryption_mode, from_encryption_mode);
Converters::add(to_int64, from_int64); Converters::add(to_int64, from_int64);
@@ -551,7 +552,6 @@ void Converters::ensure_default_converters()
Converters::add(to_preferred_transport, from_preferred_transport); Converters::add(to_preferred_transport, from_preferred_transport);
Converters::add(to_size_t, from_size_t); Converters::add(to_size_t, from_size_t);
Converters::add(to_string, from_string); Converters::add(to_string, from_string);
Converters::add(to_tos_t, from_tos_t);
Converters::add(to_uint64, from_uint64); Converters::add(to_uint64, from_uint64);
Converters::add(to_verify_added_mode, from_verify_added_mode); Converters::add(to_verify_added_mode, from_verify_added_mode);
}); });

View File

@@ -481,7 +481,7 @@ public:
tr_port peer_port_random_high = tr_port::from_host(65535); tr_port peer_port_random_high = tr_port::from_host(65535);
tr_port peer_port_random_low = tr_port::from_host(49152); tr_port peer_port_random_low = tr_port::from_host(49152);
tr_port peer_port = tr_port::from_host(TrDefaultPeerPort); tr_port peer_port = tr_port::from_host(TrDefaultPeerPort);
tr_tos_t peer_socket_tos{ 0x04 }; tr_diffserv_t peer_socket_diffserv{ 0x04 };
tr_verify_added_mode torrent_added_verify_mode = TR_VERIFY_ADDED_FAST; tr_verify_added_mode torrent_added_verify_mode = TR_VERIFY_ADDED_FAST;
private: private:
@@ -515,7 +515,7 @@ public:
Field<&Settings::peer_port_random_high>{ TR_KEY_peer_port_random_high }, Field<&Settings::peer_port_random_high>{ TR_KEY_peer_port_random_high },
Field<&Settings::peer_port_random_low>{ TR_KEY_peer_port_random_low }, Field<&Settings::peer_port_random_low>{ TR_KEY_peer_port_random_low },
Field<&Settings::peer_port_random_on_start>{ TR_KEY_peer_port_random_on_start }, Field<&Settings::peer_port_random_on_start>{ TR_KEY_peer_port_random_on_start },
Field<&Settings::peer_socket_tos>{ TR_KEY_peer_socket_tos }, Field<&Settings::peer_socket_diffserv>{ TR_KEY_peer_socket_diffserv },
Field<&Settings::pex_enabled>{ TR_KEY_pex_enabled }, Field<&Settings::pex_enabled>{ TR_KEY_pex_enabled },
Field<&Settings::port_forwarding_enabled>{ TR_KEY_port_forwarding_enabled }, Field<&Settings::port_forwarding_enabled>{ TR_KEY_port_forwarding_enabled },
Field<&Settings::preallocation_mode>{ TR_KEY_preallocation }, Field<&Settings::preallocation_mode>{ TR_KEY_preallocation },
@@ -751,9 +751,9 @@ public:
settings_.peer_congestion_algorithm = algorithm; settings_.peer_congestion_algorithm = algorithm;
} }
void setSocketTOS(tr_socket_t sock, tr_address_type type) const void setSocketDiffServ(tr_socket_t sock, tr_address_type type) const
{ {
tr_netSetTOS(sock, settings_.peer_socket_tos, type); tr_netSetDiffServ(sock, settings_.peer_socket_diffserv, type);
} }
[[nodiscard]] constexpr auto peerLimit() const noexcept [[nodiscard]] constexpr auto peerLimit() const noexcept

View File

@@ -205,7 +205,7 @@ tr_session::tr_udp_core::tr_udp_core(tr_session& session, tr_port udp_port)
else else
{ {
tr_logAddInfo(fmt::format("Bound UDP IPv4 address {:s}", tr_socket_address::display_name(addr, udp_port_))); tr_logAddInfo(fmt::format("Bound UDP IPv4 address {:s}", tr_socket_address::display_name(addr, udp_port_)));
session_.setSocketTOS(sock, TR_AF_INET); session_.setSocketDiffServ(sock, TR_AF_INET);
set_socket_buffers(sock, session_.allowsUTP()); set_socket_buffers(sock, session_.allowsUTP());
udp4_socket_ = sock; udp4_socket_ = sock;
udp4_event_.reset(event_new(session_.event_base(), udp4_socket_, EV_READ | EV_PERSIST, event_callback, &session_)); udp4_event_.reset(event_new(session_.event_base(), udp4_socket_, EV_READ | EV_PERSIST, event_callback, &session_));
@@ -252,7 +252,7 @@ tr_session::tr_udp_core::tr_udp_core(tr_session& session, tr_port udp_port)
else else
{ {
tr_logAddInfo(fmt::format("Bound UDP IPv6 address {:s}", tr_socket_address::display_name(addr, udp_port_))); tr_logAddInfo(fmt::format("Bound UDP IPv6 address {:s}", tr_socket_address::display_name(addr, udp_port_)));
session_.setSocketTOS(sock, TR_AF_INET6); session_.setSocketDiffServ(sock, TR_AF_INET6);
set_socket_buffers(sock, session_.allowsUTP()); set_socket_buffers(sock, session_.allowsUTP());
udp6_socket_ = sock; udp6_socket_ = sock;
udp6_event_.reset(event_new(session_.event_base(), udp6_socket_, EV_READ | EV_PERSIST, event_callback, &session_)); udp6_event_.reset(event_new(session_.event_base(), udp6_socket_, EV_READ | EV_PERSIST, event_callback, &session_));

View File

@@ -524,7 +524,7 @@ void onTorrentCompletenessChanged(tr_torrent* tor, tr_completeness status, bool
//hidden pref //hidden pref
if ([_fDefaults objectForKey:@"PeerSocketTOS"]) if ([_fDefaults objectForKey:@"PeerSocketTOS"])
{ {
tr_variantDictAddStr(&settings, TR_KEY_peer_socket_tos, [_fDefaults stringForKey:@"PeerSocketTOS"].UTF8String); tr_variantDictAddStr(&settings, TR_KEY_peer_socket_diffserv, [_fDefaults stringForKey:@"PeerSocketTOS"].UTF8String);
} }
tr_variantDictAddBool(&settings, TR_KEY_pex_enabled, [_fDefaults boolForKey:@"PEXGlobal"]); tr_variantDictAddBool(&settings, TR_KEY_pex_enabled, [_fDefaults boolForKey:@"PEXGlobal"]);

View File

@@ -141,7 +141,7 @@ std::array<Prefs::PrefItem, Prefs::PREFS_COUNT> const Prefs::Items{
{ SCRIPT_TORRENT_DONE_FILENAME, TR_KEY_script_torrent_done_filename, QMetaType::QString }, { SCRIPT_TORRENT_DONE_FILENAME, TR_KEY_script_torrent_done_filename, QMetaType::QString },
{ SCRIPT_TORRENT_DONE_SEEDING_ENABLED, TR_KEY_script_torrent_done_seeding_enabled, QMetaType::Bool }, { SCRIPT_TORRENT_DONE_SEEDING_ENABLED, TR_KEY_script_torrent_done_seeding_enabled, QMetaType::Bool },
{ SCRIPT_TORRENT_DONE_SEEDING_FILENAME, TR_KEY_script_torrent_done_seeding_filename, QMetaType::QString }, { SCRIPT_TORRENT_DONE_SEEDING_FILENAME, TR_KEY_script_torrent_done_seeding_filename, QMetaType::QString },
{ SOCKET_TOS, TR_KEY_peer_socket_tos, QMetaType::QString }, { SOCKET_DIFFSERV, TR_KEY_peer_socket_diffserv, QMetaType::QString },
{ START, TR_KEY_start_added_torrents, QMetaType::Bool }, { START, TR_KEY_start_added_torrents, QMetaType::Bool },
{ TRASH_ORIGINAL, TR_KEY_trash_original_torrent_files, QMetaType::Bool }, { TRASH_ORIGINAL, TR_KEY_trash_original_torrent_files, QMetaType::Bool },
{ PEX_ENABLED, TR_KEY_pex_enabled, QMetaType::Bool }, { PEX_ENABLED, TR_KEY_pex_enabled, QMetaType::Bool },

View File

@@ -104,7 +104,7 @@ public:
SCRIPT_TORRENT_DONE_FILENAME, SCRIPT_TORRENT_DONE_FILENAME,
SCRIPT_TORRENT_DONE_SEEDING_ENABLED, SCRIPT_TORRENT_DONE_SEEDING_ENABLED,
SCRIPT_TORRENT_DONE_SEEDING_FILENAME, SCRIPT_TORRENT_DONE_SEEDING_FILENAME,
SOCKET_TOS, SOCKET_DIFFSERV,
START, START,
TRASH_ORIGINAL, TRASH_ORIGINAL,
PEX_ENABLED, PEX_ENABLED,

View File

@@ -481,7 +481,7 @@ constexpr std::string_view CurrentSettingsJson = R"json({
"peer_port_random_high": 65535, "peer_port_random_high": 65535,
"peer_port_random_low": 49152, "peer_port_random_low": 49152,
"peer_port_random_on_start": false, "peer_port_random_on_start": false,
"peer_socket_tos": "le", "peer_socket_diffserv": "le",
"pex_enabled": true, "pex_enabled": true,
"port_forwarding_enabled": true, "port_forwarding_enabled": true,
"preallocation": 1, "preallocation": 1,

View File

@@ -360,36 +360,36 @@ TEST_F(SettingsTest, canSaveNullableString)
EXPECT_TRUE(null_p); EXPECT_TRUE(null_p);
} }
TEST_F(SettingsTest, canLoadTos) TEST_F(SettingsTest, canLoadDiffServ)
{ {
static auto constexpr Key = TR_KEY_peer_socket_tos; static auto constexpr Key = TR_KEY_peer_socket_diffserv;
static auto constexpr ChangedValue = tr_tos_t{ 0x20 }; static auto constexpr ChangedValue = tr_diffserv_t{ 0x20 };
auto settings = std::make_unique<tr_session::Settings>(); auto settings = std::make_unique<tr_session::Settings>();
auto const default_value = settings->peer_socket_tos; auto const default_value = settings->peer_socket_diffserv;
ASSERT_NE(ChangedValue, default_value); ASSERT_NE(ChangedValue, default_value);
auto map = tr_variant::Map{ 1U }; auto map = tr_variant::Map{ 1U };
map.try_emplace(Key, 0x20); map.try_emplace(Key, 0x20);
settings->load(tr_variant{ std::move(map) }); settings->load(tr_variant{ std::move(map) });
EXPECT_EQ(ChangedValue, settings->peer_socket_tos); EXPECT_EQ(ChangedValue, settings->peer_socket_diffserv);
settings = std::make_unique<tr_session::Settings>(); settings = std::make_unique<tr_session::Settings>();
map = tr_variant::Map{ 1U }; map = tr_variant::Map{ 1U };
map.try_emplace(Key, "cs1"sv); map.try_emplace(Key, "cs1"sv);
settings->load(tr_variant{ std::move(map) }); settings->load(tr_variant{ std::move(map) });
EXPECT_EQ(ChangedValue, settings->peer_socket_tos); EXPECT_EQ(ChangedValue, settings->peer_socket_diffserv);
} }
TEST_F(SettingsTest, canSaveTos) TEST_F(SettingsTest, canSaveDiffServ)
{ {
static auto constexpr Key = TR_KEY_peer_socket_tos; static auto constexpr Key = TR_KEY_peer_socket_diffserv;
static auto constexpr ChangedValue = tr_tos_t{ 0x20 }; static auto constexpr ChangedValue = tr_diffserv_t{ 0x20 };
auto settings = tr_session::Settings{}; auto settings = tr_session::Settings{};
ASSERT_NE(ChangedValue, settings.peer_socket_tos); ASSERT_NE(ChangedValue, settings.peer_socket_diffserv);
settings.peer_socket_tos = tr_tos_t(0x20); settings.peer_socket_diffserv = tr_diffserv_t(0x20);
auto const map = settings.save(); auto const map = settings.save();
auto const val = map.value_if<std::string_view>(Key); auto const val = map.value_if<std::string_view>(Key);
ASSERT_TRUE(val); ASSERT_TRUE(val);