diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 6110c45e474bd994d6a434aedb947a0a0595d3da..f4d7867ee44dde6c0371de8ecfe39db9efc1a3cc 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -149,7 +149,7 @@ void UserManager::handlePresence(Swift::Presence::ref presence) { // Create user class if it's not there if (!user) { // Admin user is not legacy network user, so do not create User class instance for him - if (CONFIG_STRING(m_component->getConfig(), "service.admin_username") == presence->getFrom().getNode()) { + if (m_component->inServerMode() && CONFIG_STRING(m_component->getConfig(), "service.admin_jid") == presence->getFrom().toBare().toString()) { return; } @@ -319,6 +319,11 @@ void UserManager::handleSubscription(Swift::Presence::ref presence) { return; } + // Don't let RosterManager to handle presences for us + if (presence->getTo().getNode().empty()) { + return; + } + User *user = getUser(presence->getFrom().toBare().toString()); if (user) {