From 13878f6a9dd2a63bd19ccfef9c448d042efe4e5b 2015-12-15 07:31:13 From: Jan Kaluza Date: 2015-12-15 07:31:13 Subject: [PATCH] Fix crashes on exit --- diff --git a/spectrum/src/frontends/xmpp/XMPPUserManager.cpp b/spectrum/src/frontends/xmpp/XMPPUserManager.cpp index 86acc50bb290c188aa3867ac3f423e958057dfe9..6f9c92fdcf882dcb8a1ffdff5ffe707436135e23 100644 --- a/spectrum/src/frontends/xmpp/XMPPUserManager.cpp +++ b/spectrum/src/frontends/xmpp/XMPPUserManager.cpp @@ -56,6 +56,9 @@ XMPPUserManager::XMPPUserManager(Component *component, UserRegistry *userRegistr m_storageResponder = new StorageResponder(frontend->getIQRouter(), storageBackend, this); m_storageResponder->start(); } + else { + m_storageResponder = NULL; + } m_vcardResponder = new VCardResponder(frontend->getIQRouter(), component->getNetworkFactories(), this); m_vcardResponder->onVCardRequired.connect(boost::bind(&XMPPUserManager::handleVCardRequired, this, _1, _2, _3)); @@ -97,10 +100,16 @@ XMPPUserManager::~XMPPUserManager() { delete m_userRegistration; } + m_gatewayResponder->stop(); delete m_gatewayResponder; + + m_adHocManager->stop(); delete m_adHocManager; - delete m_settings; + + m_vcardResponder->stop(); delete m_vcardResponder; + + m_rosterResponder->stop(); delete m_rosterResponder; } diff --git a/src/NetworkPluginServer.cpp b/src/NetworkPluginServer.cpp index 583e4601cb3b2c88a8ca8346f729760337005433..99228c41ad1465500dc7caf3a632c24f2cdfc37c 100644 --- a/src/NetworkPluginServer.cpp +++ b/src/NetworkPluginServer.cpp @@ -310,6 +310,10 @@ NetworkPluginServer::NetworkPluginServer(Component *component, Config *config, U } NetworkPluginServer::~NetworkPluginServer() { +#ifndef _WIN32 + signal(SIGCHLD, SIG_IGN); +#endif + for (std::list::const_iterator it = m_clients.begin(); it != m_clients.end(); it++) { LOG4CXX_INFO(logger, "Stopping backend " << *it); std::string message; diff --git a/src/UserManager.cpp b/src/UserManager.cpp index f67409e629e2dc140afcea6ed68267e26697723d..f4746013e797385dc01155223bfa8e7f71f42c25 100644 --- a/src/UserManager.cpp +++ b/src/UserManager.cpp @@ -65,7 +65,7 @@ UserManager::UserManager(Component *component, UserRegistry *userRegistry, Stora m_removeTimer = m_component->getNetworkFactories()->getTimerFactory()->createTimer(1); } -UserManager::~UserManager(){ +UserManager::~UserManager() { }