diff options
Diffstat (limited to 'chat/BuddyList.py')
-rw-r--r-- | chat/BuddyList.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/chat/BuddyList.py b/chat/BuddyList.py index fa3afb0..e5fd076 100644 --- a/chat/BuddyList.py +++ b/chat/BuddyList.py @@ -62,9 +62,11 @@ class BuddyList(object): def _add_buddy(self, host, address, port, servicename, data): if len(data) > 0 and 'name' in data.keys(): - buddy = Buddy(data['name'], data['realname'], servicename, host, address, port) - self._buddies[data['name']] = buddy - self._notify_listeners(ACTION_BUDDY_ADDED, buddy) + buddy = self._find_buddy_by_service_name(servicename) + if not buddy: + buddy = Buddy(data['name'], data['realname'], servicename, host, address, port) + self._buddies[data['name']] = buddy + self._notify_listeners(ACTION_BUDDY_ADDED, buddy) def _remove_buddy(self, buddy): nick = buddy.nick() @@ -72,7 +74,7 @@ class BuddyList(object): del self._buddies[nick] def _find_buddy_by_service_name(self, servicename): - for buddy in self._buddies.keys(): + for buddy in self._buddies.values(): if buddy.servicename() == servicename: return buddy return None |