aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2011-01-18 15:10:47 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2011-01-18 15:10:47 +0000
commitcc2dd3e0123157cee11aef0c7e6bb05456263d7b (patch)
tree22b4d5f08fec0b923d8a74875fc3c91ad5cb159d /src
parent5932fb455d983b2411219f3da127b5cde4dc3bdf (diff)
downloadqxmpp-cc2dd3e0123157cee11aef0c7e6bb05456263d7b.tar.gz
* avoid crash when receiving an empty roster push
* only create reciprocal subscriptions when the appropriate option is set
Diffstat (limited to 'src')
-rw-r--r--src/QXmppRosterManager.cpp21
1 files changed, 6 insertions, 15 deletions
diff --git a/src/QXmppRosterManager.cpp b/src/QXmppRosterManager.cpp
index 6252e04e..8cc1b52e 100644
--- a/src/QXmppRosterManager.cpp
+++ b/src/QXmppRosterManager.cpp
@@ -109,10 +109,16 @@ void QXmppRosterManager::presenceReceived(const QXmppPresence& presence)
case QXmppPresence::Subscribe:
if (client()->configuration().autoAcceptSubscriptions())
{
+ // accept subscription request
QXmppPresence presence;
presence.setTo(jid);
presence.setType(QXmppPresence::Subscribed);
client()->sendPacket(presence);
+
+ // ask for reciprocal subscription
+ presence.setTo(bareJid);
+ presence.setType(QXmppPresence::Subscribe);
+ client()->sendPacket(presence);
}
break;
default:
@@ -141,21 +147,6 @@ void QXmppRosterManager::rosterIqReceived(const QXmppRosterIq& rosterIq)
m_entries[bareJid] = items.at(i);
emit rosterChanged(bareJid);
}
-
- // when contact subscribes user...user sends 'subscribed' presence
- // then after recieving following iq user requests contact for subscription
-
- // check the "from" is newly added in the roster...and remove this ask thing...and do this for all items
- QXmppRosterIq::Item item = items.at(0);
- if (!item.bareJid().isEmpty() &&
- item.subscriptionType() == QXmppRosterIq::Item::From &&
- item.subscriptionStatus().isEmpty())
- {
- QXmppPresence presence;
- presence.setTo(item.bareJid());
- presence.setType(QXmppPresence::Subscribe);
- client()->sendPacket(presence);
- }
}
break;
case QXmppIq::Result: