From cc2dd3e0123157cee11aef0c7e6bb05456263d7b Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Tue, 18 Jan 2011 15:10:47 +0000 Subject: * avoid crash when receiving an empty roster push * only create reciprocal subscriptions when the appropriate option is set --- src/QXmppRosterManager.cpp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'src/QXmppRosterManager.cpp') 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: -- cgit v1.2.3