diff --git a/libervia/backend/plugins/plugin_xep_0045.py b/libervia/backend/plugins/plugin_xep_0045.py index 616fd1a9..882b4064 100644 --- a/libervia/backend/plugins/plugin_xep_0045.py +++ b/libervia/backend/plugins/plugin_xep_0045.py @@ -269,7 +269,9 @@ class XEP_0045(object): def _ui_room_join_cb(self, data, profile): room_jid = jid.JID(data['index']) client = self.host.get_client(profile) - self.join(client, room_jid) + defer.ensureDeferred( + self.join(client, room_jid) + ) return {} def _password_ui_cb(self, data, client, room_jid, nick): @@ -539,9 +541,12 @@ class XEP_0045(object): if not room_jid.user: room_jid.user, room_jid.host = room_jid.host, muc_service else: - room_jid = self.get_unique_name(profile_key=client.profile) + room_jid = self.get_unique_name(client) # TODO: error management + signal in bridge - d = self.join(client, room_jid, nick, options or None) + d = defer.ensureDeferred( + self.join(client, room_jid, nick, options or None) + ) + d.addCallback(lambda room: [False] + self._get_room_joined_args(room, client.profile)) d.addErrback(self._join_eb, client) return d @@ -697,7 +702,9 @@ class XEP_0045(object): muc_service = client.muc_service or "" nick = client.jid.user room_jid = self.text_cmds.get_room_jid(room_raw, muc_service) - self.join(client, room_jid, nick, {}) + defer.ensureDeferred( + self.join(client, room_jid, nick, {}) + ) return False