diff --git a/sat/plugins/plugin_xep_0384.py b/sat/plugins/plugin_xep_0384.py index 689ef149..f7b60817 100644 --- a/sat/plugins/plugin_xep_0384.py +++ b/sat/plugins/plugin_xep_0384.py @@ -539,6 +539,8 @@ class OMEMO(object): @defer.inlineCallbacks def profileConnected(self, client): + # FIXME: is _xep_0384_ready needed? can we use profileConnecting? + # Workflow should be checked client._xep_0384_ready = defer.Deferred() # we first need to get devices ids (including our own) persistent_dict = persistent.LazyPersistentBinaryDict("XEP-0384", client.profile) @@ -767,7 +769,11 @@ class OMEMO(object): @defer.inlineCallbacks def onNewDevices(self, itemsEvent, profile): client = self.host.getClient(profile) - omemo_session = client._xep_0384_session + try: + omemo_session = client._xep_0384_session + except AttributeError: + yield client._xep_0384_ready + omemo_session = client._xep_0384_session entity = itemsEvent.sender devices = self.parseDevices(itemsEvent.items)