Changeset - cc37caf8038d
[Not reviewed]
0 1 0
HanzZ - 14 years ago 2011-08-09 00:45:51
hanzz.k@gmail.com
Don't handle unavailable presence if we know that we're reconnecting and removing user
1 file changed with 6 insertions and 4 deletions:
0 comments (0 inline, 0 general)
src/usermanager.cpp
Show inline comments
 
@@ -100,7 +100,7 @@ int UserManager::getUserCount() {
 
void UserManager::handlePresence(Swift::Presence::ref presence) {
 
	std::string barejid = presence->getTo().toBare().toString();
 
	std::string userkey = presence->getFrom().toBare().toString();
 

	
 
	std::cout << "PRESENCE " << presence->getType() << "\n";
 
	User *user = getUser(userkey);
 
	if (!user) {
 
		if (CONFIG_STRING(m_component->getConfig(), "service.admin_username") == presence->getFrom().getNode()) {
 
@@ -212,9 +212,11 @@ void UserManager::handleRemoveTimeout(const std::string jid, bool reconnect) {
 
			msg->setTo(user->getJID().toBare());
 
			msg->setFrom(m_component->getJID());
 
			m_component->getStanzaChannel()->sendMessage(msg);
 
			if (m_component->inServerMode()) {
 
				dynamic_cast<Swift::ServerStanzaChannel *>(m_component->getStanzaChannel())->finishSession(user->getJID().toBare(), boost::shared_ptr<Swift::Element>(new Swift::StreamError()));
 
			}
 
			m_component->onUserPresenceReceived.disconnect(bind(&UserManager::handlePresence, this, _1));
 
 			if (m_component->inServerMode()) {
 
 				dynamic_cast<Swift::ServerStanzaChannel *>(m_component->getStanzaChannel())->finishSession(user->getJID().toBare(), boost::shared_ptr<Swift::Element>(new Swift::StreamError()));
 
 			}
 
 			m_component->onUserPresenceReceived.connect(bind(&UserManager::handlePresence, this, _1));
 
		}
 
		removeUser(user);
 
	}
0 comments (0 inline, 0 general)