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

Reply via email to