diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-02-22 09:10:37 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-02-22 09:10:37 +0000 |
| commit | 3e8b1bd1697696dcbd14ef8f7c24701d4b04eede (patch) | |
| tree | 8dd403c2d9a7618875c7bdda0615be5560e4730a /source/QXmppRoster.cpp | |
| parent | 5d212b90576c695fde9acf7f134d73910e51c18a (diff) | |
| download | qxmpp-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.cpp | 7 |
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); } |
