changeset 2978:bad0b4280b77

quick frontends (contact list): ignore roster entities with a resource: cache uses bare entities, as a result when a jid with a resource is used in roster, it is not handled properly. As this case is rare and probably resulting from bugs in clients, entities with resources are ignored and a warning is logged when this happens. fix 306
author Goffi <goffi@goffi.org>
date Sun, 30 Jun 2019 15:52:27 +0200
parents 06f30ad8e110
children f44a95f566d2
files sat_frontends/quick_frontend/quick_contact_list.py
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/sat_frontends/quick_frontend/quick_contact_list.py	Sun Jun 30 15:43:57 2019 +0200
+++ b/sat_frontends/quick_frontend/quick_contact_list.py	Sun Jun 30 15:52:27 2019 +0200
@@ -22,14 +22,13 @@
 
 from sat.core.i18n import _
 from sat.core.log import getLogger
-
-log = getLogger(__name__)
 from sat.core import exceptions
 from sat_frontends.quick_frontend.quick_widgets import QuickWidget
 from sat_frontends.quick_frontend.constants import Const as C
 from sat_frontends.tools import jid
 from collections import OrderedDict
 
+log = getLogger(__name__)
 
 try:
     # FIXME: to be removed when an acceptable solution is here
@@ -234,6 +233,14 @@
         @param contacts(tuple): all contacts
         """
         for contact in contacts:
+            entity = jid.JID(contact[0])
+            if entity.resource:
+                # we use entity's bare jid to cache data, so a resource here
+                # will cause troubles
+                log.warning(
+                    "Roster entities with resources are not managed, ignoring {entity}"
+                    .format(entity=entity))
+                continue
             self.host.newContactHandler(*contact, profile=self.profile)
         handler._contactsFilled(self.profile)