diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-01-18 15:10:47 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-01-18 15:10:47 +0000 |
| commit | cc2dd3e0123157cee11aef0c7e6bb05456263d7b (patch) | |
| tree | 22b4d5f08fec0b923d8a74875fc3c91ad5cb159d /src | |
| parent | 5932fb455d983b2411219f3da127b5cde4dc3bdf (diff) | |
| download | qxmpp-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.cpp | 21 |
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: |
