From 9c48437b09d7bbccd43170b28c521af36b7b2b70 2012-12-28 08:55:29 From: HanzZ Date: 2012-12-28 08:55:29 Subject: [PATCH] support for XEP-0172 --- diff --git a/src/rostermanager.cpp b/src/rostermanager.cpp index ebb7c45664bf56ac1f2fd11e5c00705e58c09a1d..88b6997131ad7c02605fb9c7b4004216a6e22b09 100644 --- a/src/rostermanager.cpp +++ b/src/rostermanager.cpp @@ -204,7 +204,9 @@ void RosterManager::sendBuddySubscribePresence(Buddy *buddy) { response->setTo(m_user->getJID()); response->setFrom(buddy->getJID()); response->setType(Swift::Presence::Subscribe); -// TODO: NICKNAME + if (!buddy->getAlias().empty()) { + response->addPayload(boost::make_shared(buddy->getAlias())); + } m_component->getStanzaChannel()->sendPresence(response); } @@ -231,14 +233,7 @@ void RosterManager::setBuddyCallback(Buddy *buddy) { sendBuddyRosterPush(buddy); } else { - // Send RIE only if there's resource which supports it. - std::vector jidWithRIE = m_user->getJIDWithFeature("http://jabber.org/protocol/rosterx"); - if (!jidWithRIE.empty()) { - m_RIETimer->start(); - } - else { - sendBuddySubscribePresence(buddy); - } + m_RIETimer->start(); } } diff --git a/src/tests/rostermanager.cpp b/src/tests/rostermanager.cpp index 774212cf60d735a9816530ba5e9a4a79e7216a4d..e9e5f90391140b71d8ed355c7e3996138ec03c91 100644 --- a/src/tests/rostermanager.cpp +++ b/src/tests/rostermanager.cpp @@ -25,6 +25,7 @@ class RosterManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTest { CPPUNIT_TEST(setBuddy); CPPUNIT_TEST(sendCurrentPresences); CPPUNIT_TEST(sendCurrentPresence); + CPPUNIT_TEST(sendBuddySubscribePresence); CPPUNIT_TEST(removeBuddy); CPPUNIT_TEST(subscribeExistingBuddy); CPPUNIT_TEST(subscribeNewBuddy); @@ -59,6 +60,17 @@ class RosterManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTest { m_buddy = buddy->getName(); } + void sendBuddySubscribePresence() { + add2Buddies(); + received.clear(); + User *user = userManager->getUser("user@localhost"); + user->getRosterManager()->sendBuddySubscribePresence(user->getRosterManager()->getBuddy("buddy1")); + CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()); + CPPUNIT_ASSERT_EQUAL(std::string("Buddy 1"), getStanza(received[0])->getPayload()->getNickname()); + + } + void setBuddy() { add2Buddies(); CPPUNIT_ASSERT_EQUAL(2, (int) received.size());