diff --git a/src/upnp/protocol/natpmp/nat_pmp.cpp b/src/upnp/protocol/natpmp/nat_pmp.cpp index 633f5807ce510fc53662759a74a337332232a70d..c5e8ce6de029feb739b3f8c634636de5dc8e98aa 100644 --- a/src/upnp/protocol/natpmp/nat_pmp.cpp +++ b/src/upnp/protocol/natpmp/nat_pmp.cpp @@ -115,26 +115,26 @@ NatPmp::setObserver(UpnpMappingObserver* obs) void NatPmp::terminate(std::condition_variable& cv) { + if (logger_) logger_->debug("NAT-PMP: Terminate instance {}", fmt::ptr(this)); + initialized_ = false; observer_ = nullptr; - { - std::lock_guard<std::mutex> lock(natpmpMutex_); - shutdownComplete_ = true; - cv.notify_one(); - } + std::lock_guard<std::mutex> lock(natpmpMutex_); + shutdownComplete_ = true; + cv.notify_one(); } void NatPmp::terminate() { - std::unique_lock<std::mutex> lk(natpmpMutex_); std::condition_variable cv {}; ioContext->dispatch([&] { terminate(cv); }); + std::unique_lock<std::mutex> lk(natpmpMutex_); if (cv.wait_for(lk, std::chrono::seconds(10), [this] { return shutdownComplete_; })) { if (logger_) logger_->debug("NAT-PMP: Shutdown completed"); } else { diff --git a/src/upnp/protocol/pupnp/pupnp.cpp b/src/upnp/protocol/pupnp/pupnp.cpp index d1feed9a3df11901e4db0f06565d12b3b2f54092..8db05170fb16201a73dbcc851d61c9026becf5cb 100644 --- a/src/upnp/protocol/pupnp/pupnp.cpp +++ b/src/upnp/protocol/pupnp/pupnp.cpp @@ -208,24 +208,21 @@ PUPnP::terminate(std::condition_variable& cv) // Clear all the lists. discoveredIgdList_.clear(); - { - std::lock_guard<std::mutex> lock(pupnpMutex_); - validIgdList_.clear(); - shutdownComplete_ = true; - cv.notify_one(); - } + std::lock_guard<std::mutex> lock(pupnpMutex_); + validIgdList_.clear(); + shutdownComplete_ = true; + cv.notify_one(); } void PUPnP::terminate() { - std::unique_lock<std::mutex> lk(pupnpMutex_); std::condition_variable cv {}; - ioContext->dispatch([&] { terminate(cv); }); + std::unique_lock<std::mutex> lk(pupnpMutex_); if (cv.wait_for(lk, std::chrono::seconds(10), [this] { return shutdownComplete_; })) { if (logger_) logger_->debug("PUPnP: Shutdown completed"); } else {