changeset 564fd2aec35f in /home/hg/repos/gajim-plugins
author: lovetox <[email protected]>
branches:
details:gajim-plugins?cmd=changeset;node=564fd2aec35f
description: Rework publishing devicelists & handle duplicates (#75)
* Rework publishing own devicelist
* Dont allow duplicates in received device lists
A bug in a client could lead to a devicelist that has duplicates
in it. We should not transfer these duplicates into our devicelist
of the contact.
diffstat:
omemo/__init__.py | 15 +++++++--------
1 files changed, 7 insertions(+), 8 deletions(-)
diffs (44 lines):
diff -r 153911c5d6e9 -r 564fd2aec35f omemo/__init__.py
--- a/omemo/__init__.py Thu Jul 07 21:03:52 2016 +0200
+++ b/omemo/__init__.py Sat Jul 16 10:49:41 2016 +0200
@@ -282,14 +282,12 @@
state.own_devices):
# Our own device_id is not in the list, it could be
# overwritten by some other client?
- # also remove duplicates
- devices_list = list(set(state.own_devices))
- devices_list.append(state.own_device_id)
+ # Is a Device ID duplicated?
self.publish_own_devices_list(account_name, state)
else:
log.info(account_name + ' => Received device list for ' +
contact_jid + ':' + str(devices_list))
- state.set_devices(contact_jid, devices_list)
+ state.set_devices(contact_jid, set(devices_list))
state.store.sessionStore.setActiveState(devices_list, contact_jid)
if (account_name in self.ui_list and
contact_jid not in self.ui_list[account_name]):
@@ -307,8 +305,11 @@
@log_calls('OmemoPlugin')
def publish_own_devices_list(self, account_name, state):
+
devices_list = state.own_devices
- devices_list += [state.own_device_id]
+ devices_list.append(state.own_device_id)
+ devices_list = list(set(devices_list))
+ state.set_own_devices(devices_list)
log.debug(account_name + ' => Publishing own devices_list ' + str(
devices_list))
@@ -517,9 +518,7 @@
state.own_devices):
# Our own device_id is not in the list, it could be
# overwritten by some other client?
- # also remove duplicates
- devices_list = list(set(state.own_devices))
- devices_list.append(state.own_device_id)
+ # Is a Device ID duplicated?
self.publish_own_devices_list(account, state)
else:
log.error(account + ' => Devicelistquery was NOT successful')
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits