|
|
@ -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;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|