|
|
@ -1534,22 +1534,20 @@ void ThreadMapPort() |
|
|
|
|
|
|
|
|
|
|
|
void MapPort(bool fUseUPnP) |
|
|
|
void MapPort(bool fUseUPnP) |
|
|
|
{ |
|
|
|
{ |
|
|
|
static boost::thread* upnp_thread = nullptr; |
|
|
|
static std::unique_ptr<boost::thread> upnp_thread; |
|
|
|
|
|
|
|
|
|
|
|
if (fUseUPnP) |
|
|
|
if (fUseUPnP) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (upnp_thread) { |
|
|
|
if (upnp_thread) { |
|
|
|
upnp_thread->interrupt(); |
|
|
|
upnp_thread->interrupt(); |
|
|
|
upnp_thread->join(); |
|
|
|
upnp_thread->join(); |
|
|
|
delete upnp_thread; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
upnp_thread = new boost::thread(boost::bind(&TraceThread<void (*)()>, "upnp", &ThreadMapPort)); |
|
|
|
upnp_thread.reset(new boost::thread(boost::bind(&TraceThread<void (*)()>, "upnp", &ThreadMapPort))); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (upnp_thread) { |
|
|
|
else if (upnp_thread) { |
|
|
|
upnp_thread->interrupt(); |
|
|
|
upnp_thread->interrupt(); |
|
|
|
upnp_thread->join(); |
|
|
|
upnp_thread->join(); |
|
|
|
delete upnp_thread; |
|
|
|
upnp_thread.reset(); |
|
|
|
upnp_thread = nullptr; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|