diff --git a/src/rostermanager.cpp b/src/rostermanager.cpp index b5a88f5dd0a762dc312449123c9e3731c6a2926f..c8d955a86e39ff9e5bafd142b7ddd35d9b248ae6 100644 --- a/src/rostermanager.cpp +++ b/src/rostermanager.cpp @@ -377,6 +377,24 @@ void RosterManager::sendCurrentPresences(const Swift::JID &to) { } } +void RosterManager::sendCurrentPresence(const Swift::JID &from, const Swift::JID &to) { + Buddy *buddy = getBuddy(Buddy::JIDToLegacyName(from)); + if (buddy) { + Swift::Presence::ref presence = buddy->generatePresenceStanza(255); + if (presence) { + presence->setTo(to); + m_component->getStanzaChannel()->sendPresence(presence); + } + } + else { + Swift::Presence::ref response = Swift::Presence::create(); + response->setTo(to); + response->setFrom(from); + response->setType(Swift::Presence::Unavailable); + m_component->getStanzaChannel()->sendPresence(response); + } +} + void RosterManager::sendUnavailablePresences(const Swift::JID &to) { for (std::map::const_iterator it = m_buddies.begin(); it != m_buddies.end(); it++) { Buddy *buddy = (*it).second;