Do not forward user's contact (representing himself) from legacy network (situation when user A has himself in his XMPP roster)
This commit is contained in:
parent
2b9c095d0e
commit
dc1cc4170e
3 changed files with 20 additions and 4 deletions
|
@ -542,6 +542,10 @@ void NetworkPluginServer::handleBuddyChangedPayload(const std::string &data) {
|
|||
buddy->handleBuddyChanged();
|
||||
}
|
||||
else {
|
||||
if (payload.buddyname() == user->getUserInfo().uin) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<std::string> groups;
|
||||
for (int i = 0; i < payload.group_size(); i++) {
|
||||
groups.push_back(payload.group(i));
|
||||
|
@ -556,6 +560,7 @@ void NetworkPluginServer::handleBuddyChangedPayload(const std::string &data) {
|
|||
delete buddy;
|
||||
return;
|
||||
}
|
||||
|
||||
buddy->setStatus(Swift::StatusShow((Swift::StatusShow::Type) payload.status()), payload.statusmessage());
|
||||
buddy->setIconHash(payload.iconhash());
|
||||
buddy->setBlocked(payload.blocked());
|
||||
|
|
|
@ -29,6 +29,7 @@ class NetworkPluginServerTest : public CPPUNIT_NS :: TestFixture, public BasicTe
|
|||
CPPUNIT_TEST_SUITE(NetworkPluginServerTest);
|
||||
CPPUNIT_TEST(handleBuddyChangedPayload);
|
||||
CPPUNIT_TEST(handleBuddyChangedPayloadNoEscaping);
|
||||
CPPUNIT_TEST(handleBuddyChangedPayloadUserContactInRoster);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
public:
|
||||
|
@ -90,6 +91,19 @@ class NetworkPluginServerTest : public CPPUNIT_NS :: TestFixture, public BasicTe
|
|||
cfg->load(ifs2);
|
||||
}
|
||||
|
||||
void handleBuddyChangedPayloadUserContactInRoster() {
|
||||
User *user = userManager->getUser("user@localhost");
|
||||
|
||||
pbnetwork::Buddy buddy;
|
||||
buddy.set_username("user@localhost");
|
||||
buddy.set_buddyname("user");
|
||||
|
||||
std::string message;
|
||||
buddy.SerializeToString(&message);
|
||||
|
||||
serv->handleBuddyChangedPayload(message);
|
||||
CPPUNIT_ASSERT_EQUAL(0, (int) received.size());
|
||||
}
|
||||
};
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION (NetworkPluginServerTest);
|
||||
|
|
|
@ -79,7 +79,7 @@ class UserManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTest {
|
|||
dynamic_cast<Swift::ServerStanzaChannel *>(component->getStanzaChannel())->onPresenceReceived(response);
|
||||
loop->processEvents();
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(4, (int) received.size());
|
||||
CPPUNIT_ASSERT_EQUAL(3, (int) received.size());
|
||||
CPPUNIT_ASSERT(getStanza(received[0])->getPayload<Swift::DiscoInfo>());
|
||||
|
||||
Swift::Presence *presence = dynamic_cast<Swift::Presence *>(getStanza(received[1]));
|
||||
|
@ -90,9 +90,6 @@ class UserManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTest {
|
|||
CPPUNIT_ASSERT(presence);
|
||||
CPPUNIT_ASSERT_EQUAL(Swift::Presence::Subscribe, presence->getType());
|
||||
|
||||
presence = dynamic_cast<Swift::Presence *>(getStanza(received[3]));
|
||||
CPPUNIT_ASSERT(presence);
|
||||
CPPUNIT_ASSERT_EQUAL(Swift::Presence::Subscribed, presence->getType());
|
||||
}
|
||||
|
||||
void connectTwoResources() {
|
||||
|
|
Loading…
Add table
Reference in a new issue