Check if JID is valid when calling setName and ignore buddies with invalid JID
This commit is contained in:
parent
fcdddf9da4
commit
83f5f36c94
5 changed files with 13 additions and 9 deletions
|
@ -169,11 +169,11 @@ class Buddy {
|
|||
|
||||
protected:
|
||||
void generateJID();
|
||||
Swift::JID m_jid;
|
||||
|
||||
private:
|
||||
long m_id;
|
||||
// Swift::Presence::ref m_lastPresence;
|
||||
Swift::JID m_jid;
|
||||
BuddyFlag m_flags;
|
||||
RosterManager *m_rosterManager;
|
||||
Subscription m_subscription;
|
||||
|
|
|
@ -51,9 +51,11 @@ long Buddy::getID() {
|
|||
void Buddy::setFlags(BuddyFlag flags) {
|
||||
m_flags = flags;
|
||||
|
||||
try {
|
||||
generateJID();
|
||||
} catch (...) {
|
||||
if (!getSafeName().empty()) {
|
||||
try {
|
||||
generateJID();
|
||||
} catch (...) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ bool LocalBuddy::setName(const std::string &name) {
|
|||
m_name = name;
|
||||
try {
|
||||
generateJID();
|
||||
return true;
|
||||
return m_jid.isValid();
|
||||
} catch (...) {
|
||||
m_name = oldName;
|
||||
return false;
|
||||
|
|
|
@ -95,6 +95,7 @@ class NetworkFactory : public Factory {
|
|||
Buddy *createBuddy(RosterManager *rosterManager, const BuddyInfo &buddyInfo) {
|
||||
LocalBuddy *buddy = new LocalBuddy(rosterManager, buddyInfo.id);
|
||||
buddy->setAlias(buddyInfo.alias);
|
||||
buddy->setFlags((BuddyFlag) (buddyInfo.flags));
|
||||
if (!buddy->setName(buddyInfo.legacyName)) {
|
||||
delete buddy;
|
||||
return NULL;
|
||||
|
@ -106,7 +107,6 @@ class NetworkFactory : public Factory {
|
|||
buddy->setSubscription(Buddy::Ask);
|
||||
}
|
||||
buddy->setGroups(buddyInfo.groups);
|
||||
buddy->setFlags((BuddyFlag) (buddyInfo.flags));
|
||||
if (buddyInfo.settings.find("icon_hash") != buddyInfo.settings.end())
|
||||
buddy->setIconHash(buddyInfo.settings.find("icon_hash")->second.s);
|
||||
return buddy;
|
||||
|
|
|
@ -524,9 +524,11 @@ void RosterManager::setStorageBackend(StorageBackend *storageBackend) {
|
|||
|
||||
for (std::list<BuddyInfo>::const_iterator it = roster.begin(); it != roster.end(); it++) {
|
||||
Buddy *buddy = m_component->getFactory()->createBuddy(this, *it);
|
||||
LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Adding cached buddy " << buddy->getName() << " fom database");
|
||||
m_buddies[buddy->getName()] = buddy;
|
||||
onBuddySet(buddy);
|
||||
if (buddy) {
|
||||
LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Adding cached buddy " << buddy->getName() << " fom database");
|
||||
m_buddies[buddy->getName()] = buddy;
|
||||
onBuddySet(buddy);
|
||||
}
|
||||
}
|
||||
|
||||
m_rosterStorage = storage;
|
||||
|
|
Loading…
Add table
Reference in a new issue