diff --git a/daemon/src/managerimpl.cpp b/daemon/src/managerimpl.cpp index 2a2e1db187f38f3cbcdebe3e1ea08c92762ea345..4138cf3630e3cdc2278f73e7e5ccdb71c26ceaf9 100644 --- a/daemon/src/managerimpl.cpp +++ b/daemon/src/managerimpl.cpp @@ -131,24 +131,20 @@ void ManagerImpl::run() void ManagerImpl::finish() { - if (!finished_) { - finished_ = true; - // Unset signal handlers - signal(SIGHUP, SIG_DFL); - signal(SIGINT, SIG_DFL); - signal(SIGTERM, SIG_DFL); - terminate(); - dbus_.exit(); - } -} + if (finished_) + return; + + finished_ = true; + // Unset signal handlers + signal(SIGHUP, SIG_DFL); + signal(SIGINT, SIG_DFL); + signal(SIGTERM, SIG_DFL); -void ManagerImpl::terminate() -{ std::vector<std::string> callList(getCallList()); - DEBUG("Hangup %zu remaining call", callList.size()); + DEBUG("Hangup %zu remaining call(s)", callList.size()); for (std::vector<std::string>::iterator iter = callList.begin(); - iter != callList.end(); ++iter) + iter != callList.end(); ++iter) hangupCall(*iter); saveConfig(); @@ -160,10 +156,14 @@ void ManagerImpl::terminate() // the SIPVoIPLink, the link still needs the accounts for pjsip cleanup unloadAccountMap(); - ost::MutexLock lock(audioLayerMutex_); + { + ost::MutexLock lock(audioLayerMutex_); - delete audiodriver_; - audiodriver_ = NULL; + delete audiodriver_; + audiodriver_ = NULL; + } + + dbus_.exit(); } bool ManagerImpl::isCurrentCall(const std::string& callId) const diff --git a/daemon/src/managerimpl.h b/daemon/src/managerimpl.h index ef47fd2755336fa488844512a7bc0d1acf229243..580a9c78bb266a3f1693fa8ea6a1f09d8a6bd790 100644 --- a/daemon/src/managerimpl.h +++ b/daemon/src/managerimpl.h @@ -140,11 +140,6 @@ class ManagerImpl { */ void run(); - /** - * Terminate all thread (sound, link) and unload AccountMap - */ - void terminate(); - /* * Terminate all threads and exit DBus loop */ diff --git a/daemon/test/main.cpp b/daemon/test/main.cpp index f67d1b85ff3e47348eaf1cb8192eea811ad21284..7688d6b42a12e7a29c7a9703e43d424a27b42936 100644 --- a/daemon/test/main.cpp +++ b/daemon/test/main.cpp @@ -143,8 +143,8 @@ int main(int argc, char* argv[]) // Run the tests. bool wasSuccessful = runner.run(); - printf("=== Test suite terminate ===\n"); - Manager::instance().terminate(); + printf("=== Test suite ending ===\n"); + Manager::instance().finish(); restore();