Send unavailable presences for available buddies when disconnecting the user
This commit is contained in:
parent
751eaaaf32
commit
3c0e38368c
2 changed files with 20 additions and 0 deletions
|
@ -86,6 +86,8 @@ class RosterManager {
|
|||
|
||||
void sendCurrentPresences(const Swift::JID &to);
|
||||
|
||||
void sendUnavailablePresences(const Swift::JID &to);
|
||||
|
||||
private:
|
||||
void setBuddyCallback(Buddy *buddy);
|
||||
|
||||
|
|
|
@ -57,6 +57,8 @@ RosterManager::~RosterManager() {
|
|||
m_rosterStorage->storeBuddies();
|
||||
}
|
||||
|
||||
sendUnavailablePresences(m_user->getJID().toBare());
|
||||
|
||||
for (std::map<std::string, Buddy *>::const_iterator it = m_buddies.begin(); it != m_buddies.end(); it++) {
|
||||
Buddy *buddy = (*it).second;
|
||||
if (!buddy) {
|
||||
|
@ -64,6 +66,7 @@ RosterManager::~RosterManager() {
|
|||
}
|
||||
delete buddy;
|
||||
}
|
||||
|
||||
if (m_rosterStorage)
|
||||
delete m_rosterStorage;
|
||||
}
|
||||
|
@ -347,4 +350,19 @@ void RosterManager::sendCurrentPresences(const Swift::JID &to) {
|
|||
}
|
||||
}
|
||||
|
||||
void RosterManager::sendUnavailablePresences(const Swift::JID &to) {
|
||||
for (std::map<std::string, Buddy *>::const_iterator it = m_buddies.begin(); it != m_buddies.end(); it++) {
|
||||
Buddy *buddy = (*it).second;
|
||||
if (!buddy) {
|
||||
continue;
|
||||
}
|
||||
Swift::Presence::ref presence = buddy->generatePresenceStanza(255);
|
||||
if (presence) {
|
||||
presence->setTo(to);
|
||||
presence->setType(Swift::Presence::Unavailable);
|
||||
m_component->getStanzaChannel()->sendPresence(presence);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue