diff --git a/src/message_control.py b/src/message_control.py index cdd76f091..f2e35c029 100644 --- a/src/message_control.py +++ b/src/message_control.py @@ -200,7 +200,7 @@ class MessageControl(object): if session: session.control = self - if oldsession: + if session and oldsession: oldsession.control = None crypto_changed = bool(session and isinstance(session, diff --git a/src/session.py b/src/session.py index 2a4ec8d9a..bc4687f4c 100644 --- a/src/session.py +++ b/src/session.py @@ -67,10 +67,17 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession): return contact = gajim.contacts.get_contact(self.conn.name, obj.jid, obj.resource) + if not contact: + contact = gajim.contacts.get_gc_contact(self.conn.name, obj.jid, + obj.resource) if self.resource != obj.resource: self.resource = obj.resource if self.control: - self.control.contact = contact + if isinstance(contact, contacts.GC_Contact): + self.control.gc_contact = contact + self.control.contact = contact.as_contact() + else: + self.control.contact = contact if self.control.resource: self.control.change_resource(self.resource) @@ -162,7 +169,11 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession): if ctrl: self.control = ctrl self.control.set_session(self) - self.control.contact = contact + if isinstance(contact, contacts.GC_Contact): + self.control.gc_contact = contact + self.control.contact = contact.as_contact() + else: + self.control.contact = contact if not pm: self.roster_message2(obj)