diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 8e16c029b848fcbd111cba65cfc62aab0f885059..5076a205540c5f68ec7df4b427978fbfe6fbf112 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -167,6 +167,14 @@ void UserManager::handlePresence(Swift::Presence::ref presence) { // // // addUser(user); } + + // User can be handleDisconnected in addUser callbacks... + user = getUser(userkey); + if (!user) { + m_userRegistry->onPasswordInvalid(presence->getFrom()); + return; + } + user->handlePresence(presence); bool isMUC = presence->getPayload() != NULL || *presence->getTo().getNode().c_str() == '#'; @@ -256,9 +264,11 @@ void UserManager::handleSubscription(Swift::Presence::ref presence) { void UserManager::connectUser(const Swift::JID &user) { if (m_users.find(user.toBare().toString()) != m_users.end()) { + std::cout << "FOUND\n"; m_userRegistry->onPasswordValid(user); } else { + std::cout << "NOT FOUND - PRESENCe\n"; Swift::Presence::ref response = Swift::Presence::create(); response->setTo(m_component->getJID()); response->setFrom(user);