Send unavailable presences to particular resource which disconnects

This commit is contained in:
Jan Kaluza 2011-11-10 13:55:14 +01:00
parent 2814db5bd6
commit 8e1c2b43a6

View file

@ -215,7 +215,24 @@ void User::handlePresence(Swift::Presence::ref presence) {
return;
}
sendCurrentPresence();
// User wants to disconnect this resource
if (!m_component->inServerMode()) {
if (presence->getType() == Swift::Presence::Unavailable) {
// Send unavailable presences for online contacts
m_rosterManager->sendUnavailablePresences(presence->getFrom());
// Send unavailable presence for transport contact itself
Swift::Presence::ref response = Swift::Presence::create();
response->setTo(presence->getFrom());
response->setFrom(m_component->getJID());
response->setType(Swift::Presence::Unavailable);
m_component->getStanzaChannel()->sendPresence(response);
}
else {
sendCurrentPresence();
}
}
// Change legacy network presence