25
25
26
26
static CThreadInterrupt g_mapport_interrupt;
27
27
static std::thread g_mapport_thread;
28
- static std::atomic_uint g_mapport_enabled_protos{MapPortProtoFlag::NONE };
29
- static std::atomic<MapPortProtoFlag> g_mapport_current_proto{MapPortProtoFlag::NONE };
28
+ static std::atomic_bool g_mapport_enabled{ false };
29
+ static std::atomic_bool g_mapport_current{ false };
30
30
31
31
using namespace std ::chrono_literals;
32
32
static constexpr auto PORT_MAPPING_REANNOUNCE_PERIOD{20min};
@@ -129,14 +129,14 @@ static void ThreadMapPort()
129
129
do {
130
130
ok = false ;
131
131
132
- if (g_mapport_enabled_protos & MapPortProtoFlag::PCP ) {
133
- g_mapport_current_proto = MapPortProtoFlag::PCP ;
132
+ if (g_mapport_enabled ) {
133
+ g_mapport_current = true ;
134
134
ok = ProcessPCP ();
135
135
if (ok) continue ;
136
136
}
137
137
138
- g_mapport_current_proto = MapPortProtoFlag::NONE ;
139
- if (g_mapport_enabled_protos == MapPortProtoFlag::NONE ) {
138
+ g_mapport_current = false ;
139
+ if (!g_mapport_enabled ) {
140
140
return ;
141
141
}
142
142
@@ -153,44 +153,28 @@ void StartThreadMapPort()
153
153
154
154
static void DispatchMapPort ()
155
155
{
156
- if (g_mapport_current_proto == MapPortProtoFlag::NONE && g_mapport_enabled_protos == MapPortProtoFlag::NONE) {
157
- return ;
158
- }
159
-
160
- if (g_mapport_current_proto == MapPortProtoFlag::NONE && g_mapport_enabled_protos != MapPortProtoFlag::NONE) {
156
+ if (!g_mapport_current && g_mapport_enabled) {
161
157
StartThreadMapPort ();
162
- return ;
163
- }
164
-
165
- if (g_mapport_current_proto != MapPortProtoFlag::NONE && g_mapport_enabled_protos == MapPortProtoFlag::NONE) {
158
+ } else if (g_mapport_current && !g_mapport_enabled) {
166
159
InterruptMapPort ();
167
160
StopMapPort ();
168
- return ;
169
- }
170
-
171
- if (g_mapport_enabled_protos & g_mapport_current_proto) {
172
- return ;
173
161
}
174
162
}
175
163
176
- static void MapPortProtoSetEnabled (MapPortProtoFlag proto, bool enabled)
164
+ static void MapPortProtoSetEnabled (bool enabled)
177
165
{
178
- if (enabled) {
179
- g_mapport_enabled_protos |= proto;
180
- } else {
181
- g_mapport_enabled_protos &= ~proto;
182
- }
166
+ g_mapport_enabled = enabled;
183
167
}
184
168
185
169
void StartMapPort (bool use_pcp)
186
170
{
187
- MapPortProtoSetEnabled (MapPortProtoFlag::PCP, use_pcp);
171
+ MapPortProtoSetEnabled (use_pcp);
188
172
DispatchMapPort ();
189
173
}
190
174
191
175
void InterruptMapPort ()
192
176
{
193
- g_mapport_enabled_protos = MapPortProtoFlag::NONE ;
177
+ g_mapport_enabled = false ;
194
178
if (g_mapport_thread.joinable ()) {
195
179
g_mapport_interrupt ();
196
180
}
0 commit comments