From 9c48437b09d7bbccd43170b28c521af36b7b2b70 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Fri, 28 Dec 2012 08:55:29 +0100 Subject: [PATCH] support for XEP-0172 --- src/rostermanager.cpp | 13 ++++--------- src/tests/rostermanager.cpp | 12 ++++++++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/rostermanager.cpp b/src/rostermanager.cpp index ebb7c456..88b69971 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 774212cf..e9e5f903 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());