diff --git a/spectrum_manager/src/spectrum_manager.cfg b/spectrum_manager/src/spectrum_manager.cfg index c24383f5..4b9ec622 100644 --- a/spectrum_manager/src/spectrum_manager.cfg +++ b/spectrum_manager/src/spectrum_manager.cfg @@ -1,7 +1,8 @@ [service] -admin_username=admin -admin_password=test +admin_username=admin_ +admin_password=test_ [servers] -server=localhost -server=icq.spectrum.im \ No newline at end of file +#server=localhost +server=icq.spectrum.im +server=msn.spectrum.im \ No newline at end of file diff --git a/src/user.cpp b/src/user.cpp index 2ca77538..de4823a0 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -158,11 +158,15 @@ void User::handleDisconnected(const std::string &error) { msg->setFrom(m_component->getJID()); m_component->getStanzaChannel()->sendMessage(msg); + // In server mode, server finishes the session and pass unavailable session to userManager, + // so we can't removeUser() in server mode, because it would be removed twice. + // Once in finishSession and once in m_userManager->removeUser. if (m_component->inServerMode()) { dynamic_cast(m_component->getStanzaChannel())->finishSession(m_jid, boost::shared_ptr(new Swift::StreamError())); } - - m_userManager->removeUser(this); + else { + m_userManager->removeUser(this); + } } }