mirror of
https://github.com/transmission/transmission.git
synced 2026-02-14 23:19:34 +00:00
refactor: rename peer_socket_tos to peer_socket_diffserv (#8004)
This commit is contained in:
@@ -231,7 +231,7 @@ int parseCommandLine(tr_variant* d, int argc, char const** argv)
|
||||
break;
|
||||
|
||||
case 't':
|
||||
tr_variantDictAddStr(d, TR_KEY_peer_socket_tos, my_optarg);
|
||||
tr_variantDictAddStr(d, TR_KEY_peer_socket_diffserv, my_optarg);
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
|
||||
@@ -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_limit_global:** Number (default = 200)
|
||||
* **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.
|
||||
* **sequential_download** Boolean (default = false) Enable sequential download by default when adding torrents.
|
||||
|
||||
|
||||
@@ -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_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_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_pex_enabled, TR_KEY_pex_enabled_kebab_APICOMPAT },
|
||||
{ TR_KEY_port_forwarding_enabled, TR_KEY_port_forwarding_enabled_kebab_APICOMPAT },
|
||||
|
||||
@@ -111,7 +111,7 @@ int tr_make_listen_socket_ipv6only(tr_socket_t const sock)
|
||||
|
||||
// - 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));
|
||||
|
||||
@@ -119,19 +119,19 @@ int tr_make_listen_socket_ipv6only(tr_socket_t const sock)
|
||||
{
|
||||
if (needle == key)
|
||||
{
|
||||
return tr_tos_t(value);
|
||||
return tr_diffserv_t(value);
|
||||
}
|
||||
}
|
||||
|
||||
if (auto value = tr_num_parse<int>(needle); value)
|
||||
{
|
||||
return tr_tos_t(*value);
|
||||
return tr_diffserv_t(*value);
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
std::string tr_tos_t::toString() const
|
||||
std::string tr_diffserv_t::toString() const
|
||||
{
|
||||
for (auto const& [value, key] : Names)
|
||||
{
|
||||
@@ -144,7 +144,7 @@ std::string tr_tos_t::toString() const
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -637,14 +637,14 @@ void tr_net_close_socket(tr_socket_t fd);
|
||||
// --- 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:
|
||||
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 }
|
||||
{
|
||||
}
|
||||
@@ -655,7 +655,7 @@ public:
|
||||
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;
|
||||
|
||||
@@ -701,7 +701,7 @@ private:
|
||||
};
|
||||
|
||||
// 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.
|
||||
|
||||
@@ -31,7 +31,7 @@ tr_peer_socket::tr_peer_socket(tr_session const* session, tr_socket_address cons
|
||||
TR_ASSERT(sock != TR_BAD_SOCKET);
|
||||
|
||||
++n_open_sockets;
|
||||
session->setSocketTOS(sock, address().type);
|
||||
session->setSocketDiffServ(sock, address().type);
|
||||
|
||||
if (auto const& algo = session->peerCongestionAlgorithm(); !std::empty(algo))
|
||||
{
|
||||
|
||||
@@ -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_low"sv, // 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
|
||||
"peers2"sv, // .resume
|
||||
"peers2-6"sv, // .resume
|
||||
|
||||
@@ -389,7 +389,7 @@ enum // NOLINT(performance-enum-size)
|
||||
TR_KEY_peer_port_random_high,
|
||||
TR_KEY_peer_port_random_low,
|
||||
TR_KEY_peer_port_random_on_start,
|
||||
TR_KEY_peer_socket_tos,
|
||||
TR_KEY_peer_socket_diffserv,
|
||||
TR_KEY_peers,
|
||||
TR_KEY_peers2,
|
||||
TR_KEY_peers2_6_kebab_APICOMPAT,
|
||||
|
||||
@@ -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 tos = tr_tos_t::from_string(*val); tos)
|
||||
if (auto const tos = tr_diffserv_t::from_string(*val); tos)
|
||||
{
|
||||
*tgt = *tos;
|
||||
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>())
|
||||
{
|
||||
*tgt = tr_tos_t{ static_cast<int>(*val) };
|
||||
*tgt = tr_diffserv_t{ static_cast<int>(*val) };
|
||||
return true;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
@@ -540,6 +540,7 @@ void Converters::ensure_default_converters()
|
||||
[]
|
||||
{
|
||||
Converters::add(to_bool, from_bool);
|
||||
Converters::add(to_diffserv_t, from_diffserv_t);
|
||||
Converters::add(to_double, from_double);
|
||||
Converters::add(to_encryption_mode, from_encryption_mode);
|
||||
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_size_t, from_size_t);
|
||||
Converters::add(to_string, from_string);
|
||||
Converters::add(to_tos_t, from_tos_t);
|
||||
Converters::add(to_uint64, from_uint64);
|
||||
Converters::add(to_verify_added_mode, from_verify_added_mode);
|
||||
});
|
||||
|
||||
@@ -481,7 +481,7 @@ public:
|
||||
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 = 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;
|
||||
|
||||
private:
|
||||
@@ -515,7 +515,7 @@ public:
|
||||
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_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::port_forwarding_enabled>{ TR_KEY_port_forwarding_enabled },
|
||||
Field<&Settings::preallocation_mode>{ TR_KEY_preallocation },
|
||||
@@ -751,9 +751,9 @@ public:
|
||||
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
|
||||
|
||||
@@ -205,7 +205,7 @@ tr_session::tr_udp_core::tr_udp_core(tr_session& session, tr_port udp_port)
|
||||
else
|
||||
{
|
||||
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());
|
||||
udp4_socket_ = sock;
|
||||
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
|
||||
{
|
||||
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());
|
||||
udp6_socket_ = sock;
|
||||
udp6_event_.reset(event_new(session_.event_base(), udp6_socket_, EV_READ | EV_PERSIST, event_callback, &session_));
|
||||
|
||||
@@ -524,7 +524,7 @@ void onTorrentCompletenessChanged(tr_torrent* tor, tr_completeness status, bool
|
||||
//hidden pref
|
||||
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"]);
|
||||
|
||||
@@ -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_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 },
|
||||
{ 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 },
|
||||
{ TRASH_ORIGINAL, TR_KEY_trash_original_torrent_files, QMetaType::Bool },
|
||||
{ PEX_ENABLED, TR_KEY_pex_enabled, QMetaType::Bool },
|
||||
|
||||
@@ -104,7 +104,7 @@ public:
|
||||
SCRIPT_TORRENT_DONE_FILENAME,
|
||||
SCRIPT_TORRENT_DONE_SEEDING_ENABLED,
|
||||
SCRIPT_TORRENT_DONE_SEEDING_FILENAME,
|
||||
SOCKET_TOS,
|
||||
SOCKET_DIFFSERV,
|
||||
START,
|
||||
TRASH_ORIGINAL,
|
||||
PEX_ENABLED,
|
||||
|
||||
@@ -481,7 +481,7 @@ constexpr std::string_view CurrentSettingsJson = R"json({
|
||||
"peer_port_random_high": 65535,
|
||||
"peer_port_random_low": 49152,
|
||||
"peer_port_random_on_start": false,
|
||||
"peer_socket_tos": "le",
|
||||
"peer_socket_diffserv": "le",
|
||||
"pex_enabled": true,
|
||||
"port_forwarding_enabled": true,
|
||||
"preallocation": 1,
|
||||
|
||||
@@ -360,36 +360,36 @@ TEST_F(SettingsTest, canSaveNullableString)
|
||||
EXPECT_TRUE(null_p);
|
||||
}
|
||||
|
||||
TEST_F(SettingsTest, canLoadTos)
|
||||
TEST_F(SettingsTest, canLoadDiffServ)
|
||||
{
|
||||
static auto constexpr Key = TR_KEY_peer_socket_tos;
|
||||
static auto constexpr ChangedValue = tr_tos_t{ 0x20 };
|
||||
static auto constexpr Key = TR_KEY_peer_socket_diffserv;
|
||||
static auto constexpr ChangedValue = tr_diffserv_t{ 0x20 };
|
||||
|
||||
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);
|
||||
|
||||
auto map = tr_variant::Map{ 1U };
|
||||
map.try_emplace(Key, 0x20);
|
||||
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>();
|
||||
map = tr_variant::Map{ 1U };
|
||||
map.try_emplace(Key, "cs1"sv);
|
||||
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 ChangedValue = tr_tos_t{ 0x20 };
|
||||
static auto constexpr Key = TR_KEY_peer_socket_diffserv;
|
||||
static auto constexpr ChangedValue = tr_diffserv_t{ 0x20 };
|
||||
|
||||
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 val = map.value_if<std::string_view>(Key);
|
||||
ASSERT_TRUE(val);
|
||||
|
||||
Reference in New Issue
Block a user