diff --git a/src/ringdht/ringaccount.cpp b/src/ringdht/ringaccount.cpp index 7f9b23055652074f1f16ae7edaaf5f4ecb60f5cd..f7645438855ca2865e95f1f03bb527fb77096cc8 100644 --- a/src/ringdht/ringaccount.cpp +++ b/src/ringdht/ringaccount.cpp @@ -2507,6 +2507,7 @@ RingAccount::doUnregister(std::function<void(bool)> released_cb) if (registrationState_ == RegistrationState::INITIALIZING || registrationState_ == RegistrationState::ERROR_NEED_MIGRATION) { + lock.unlock(); if (released_cb) released_cb(false); return; } @@ -2527,9 +2528,10 @@ RingAccount::doUnregister(std::function<void(bool)> released_cb) saveNodes(dht_.exportNodes()); saveValues(dht_.exportValues()); dht_.join(); - setRegistrationState(RegistrationState::UNREGISTERED); lock.unlock(); + setRegistrationState(RegistrationState::UNREGISTERED); + if (released_cb) released_cb(false); } diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp index de2139946c0db1c7be0d492a3373b79141c2ec8a..0bc395865dcfbbe70174d3be250e9249e27a0e4e 100644 --- a/src/sip/sipaccount.cpp +++ b/src/sip/sipaccount.cpp @@ -735,11 +735,12 @@ void SIPAccount::doRegister() void SIPAccount::doRegister1_() { - std::lock_guard<std::mutex> lock(configurationMutex_); - - if (isIP2IP()) { - doRegister2_(); - return; + { + std::lock_guard<std::mutex> lock(configurationMutex_); + if (isIP2IP()) { + doRegister2_(); + return; + } } std::weak_ptr<SIPAccount> weak_acc = std::static_pointer_cast<SIPAccount>(shared_from_this());