From 0f888d07d981965f9a9aff45988210996c71b12c Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Wed, 20 Jul 2011 11:23:24 +0200 Subject: [PATCH] Disconnect removeTimeout once it's fired --- src/usermanager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 528f3739..2eae166f 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -188,7 +188,7 @@ void UserManager::handlePresence(Swift::Presence::ref presence) { Swift::Presence::ref highest = m_component->getPresenceOracle()->getHighestPriorityPresence(presence->getFrom().toBare()); // There's no presence for this user, so disconnect if (!highest || (highest && highest->getType() == Swift::Presence::Unavailable)) { - m_removeTimer->onTick.connect(boost::bind(&UserManager::handleRemoveTimeout, this, user->getJID().toBare().toString())); + m_removeTimer->onTick.connect(boost::bind(&UserManager::handleRemoveTimeout, this, user->getJID().toBare().toString())); m_removeTimer->start(); } } @@ -200,6 +200,7 @@ void UserManager::handlePresence(Swift::Presence::ref presence) { } void UserManager::handleRemoveTimeout(const std::string jid) { + m_removeTimer->onTick.disconnect(boost::bind(&UserManager::handleRemoveTimeout, this, jid)); User *user = getUser(jid); if (user) { removeUser(user);