aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppRoster.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-02-22 09:10:37 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-02-22 09:10:37 +0000
commit3e8b1bd1697696dcbd14ef8f7c24701d4b04eede (patch)
tree8dd403c2d9a7618875c7bdda0615be5560e4730a /source/QXmppRoster.cpp
parent5d212b90576c695fde9acf7f134d73910e51c18a (diff)
downloadqxmpp-3e8b1bd1697696dcbd14ef8f7c24701d4b04eede.tar.gz
fix QXmppRoster::presenceReceived:
* only store the presence for a resource if its type is "available" * remove the presence for a resource if its type is "unavailable"
Diffstat (limited to 'source/QXmppRoster.cpp')
-rw-r--r--source/QXmppRoster.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/source/QXmppRoster.cpp b/source/QXmppRoster.cpp
index 98e9ec85..84b98ed5 100644
--- a/source/QXmppRoster.cpp
+++ b/source/QXmppRoster.cpp
@@ -44,7 +44,12 @@ void QXmppRoster::presenceReceived(const QXmppPresence& presence)
QString bareJid = jidToBareJid(jid);
QString resource = jidToResource(jid);
- m_presences[bareJid][resource] = presence;
+ if (presence.getType() == QXmppPresence::Available)
+ m_presences[bareJid][resource] = presence;
+ else if (presence.getType() == QXmppPresence::Unavailable)
+ m_presences[bareJid].remove(resource);
+ else
+ return;
emit presenceChanged(bareJid, resource);
}