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:
session.control = self
if oldsession:
if session and oldsession:
oldsession.control = None
crypto_changed = bool(session and isinstance(session,

View File

@ -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)