fix some sessions errors. Fixes #8221, #7772, #7723

This commit is contained in:
Yann Leboulanger 2016-01-17 20:54:20 +01:00
parent 9917484736
commit 67a43e7dea
2 changed files with 14 additions and 3 deletions

View File

@ -200,7 +200,7 @@ class MessageControl(object):
if session: if session:
session.control = self session.control = self
if oldsession: if session and oldsession:
oldsession.control = None oldsession.control = None
crypto_changed = bool(session and isinstance(session, crypto_changed = bool(session and isinstance(session,

View File

@ -67,10 +67,17 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
return return
contact = gajim.contacts.get_contact(self.conn.name, obj.jid, contact = gajim.contacts.get_contact(self.conn.name, obj.jid,
obj.resource) obj.resource)
if not contact:
contact = gajim.contacts.get_gc_contact(self.conn.name, obj.jid,
obj.resource)
if self.resource != obj.resource: if self.resource != obj.resource:
self.resource = obj.resource self.resource = obj.resource
if self.control: 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: if self.control.resource:
self.control.change_resource(self.resource) self.control.change_resource(self.resource)
@ -162,7 +169,11 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
if ctrl: if ctrl:
self.control = ctrl self.control = ctrl
self.control.set_session(self) 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: if not pm:
self.roster_message2(obj) self.roster_message2(obj)