mapport: make 'enabled' and 'current' bool

Since there is only a single protocol now, clarify the code by changing
the protocol enum for a bool for both variables.
This commit is contained in:
Antoine Poinsot 2024-10-25 15:07:24 -04:00
parent da10e0bab4
commit c4e82b854c
No known key found for this signature in database
GPG key ID: E13FC145CD3F4304
2 changed files with 12 additions and 34 deletions

View file

@ -25,8 +25,8 @@
static CThreadInterrupt g_mapport_interrupt; static CThreadInterrupt g_mapport_interrupt;
static std::thread g_mapport_thread; static std::thread g_mapport_thread;
static std::atomic_uint g_mapport_enabled_protos{MapPortProtoFlag::NONE}; static std::atomic_bool g_mapport_enabled{false};
static std::atomic<MapPortProtoFlag> g_mapport_current_proto{MapPortProtoFlag::NONE}; static std::atomic_bool g_mapport_current{false};
using namespace std::chrono_literals; using namespace std::chrono_literals;
static constexpr auto PORT_MAPPING_REANNOUNCE_PERIOD{20min}; static constexpr auto PORT_MAPPING_REANNOUNCE_PERIOD{20min};
@ -129,14 +129,14 @@ static void ThreadMapPort()
do { do {
ok = false; ok = false;
if (g_mapport_enabled_protos & MapPortProtoFlag::PCP) { if (g_mapport_enabled) {
g_mapport_current_proto = MapPortProtoFlag::PCP; g_mapport_current = true;
ok = ProcessPCP(); ok = ProcessPCP();
if (ok) continue; if (ok) continue;
} }
g_mapport_current_proto = MapPortProtoFlag::NONE; g_mapport_current = false;
if (g_mapport_enabled_protos == MapPortProtoFlag::NONE) { if (!g_mapport_enabled) {
return; return;
} }
@ -153,44 +153,28 @@ void StartThreadMapPort()
static void DispatchMapPort() static void DispatchMapPort()
{ {
if (g_mapport_current_proto == MapPortProtoFlag::NONE && g_mapport_enabled_protos == MapPortProtoFlag::NONE) { if (!g_mapport_current && g_mapport_enabled) {
return;
}
if (g_mapport_current_proto == MapPortProtoFlag::NONE && g_mapport_enabled_protos != MapPortProtoFlag::NONE) {
StartThreadMapPort(); StartThreadMapPort();
return; } else if (g_mapport_current && !g_mapport_enabled) {
}
if (g_mapport_current_proto != MapPortProtoFlag::NONE && g_mapport_enabled_protos == MapPortProtoFlag::NONE) {
InterruptMapPort(); InterruptMapPort();
StopMapPort(); StopMapPort();
return;
}
if (g_mapport_enabled_protos & g_mapport_current_proto) {
return;
} }
} }
static void MapPortProtoSetEnabled(MapPortProtoFlag proto, bool enabled) static void MapPortProtoSetEnabled(bool enabled)
{ {
if (enabled) { g_mapport_enabled = enabled;
g_mapport_enabled_protos |= proto;
} else {
g_mapport_enabled_protos &= ~proto;
}
} }
void StartMapPort(bool use_pcp) void StartMapPort(bool use_pcp)
{ {
MapPortProtoSetEnabled(MapPortProtoFlag::PCP, use_pcp); MapPortProtoSetEnabled(use_pcp);
DispatchMapPort(); DispatchMapPort();
} }
void InterruptMapPort() void InterruptMapPort()
{ {
g_mapport_enabled_protos = MapPortProtoFlag::NONE; g_mapport_enabled = false;
if (g_mapport_thread.joinable()) { if (g_mapport_thread.joinable()) {
g_mapport_interrupt(); g_mapport_interrupt();
} }

View file

@ -7,12 +7,6 @@
static constexpr bool DEFAULT_NATPMP = false; static constexpr bool DEFAULT_NATPMP = false;
enum MapPortProtoFlag : unsigned int {
NONE = 0x00,
// 0x01 was for UPnP, for which we dropped support.
PCP = 0x02, // PCP with NAT-PMP fallback.
};
void StartMapPort(bool use_pcp); void StartMapPort(bool use_pcp);
void InterruptMapPort(); void InterruptMapPort();
void StopMapPort(); void StopMapPort();