minor adjustments to how sessions are handled (partially fixes #3407)
This commit is contained in:
parent
ed0f54cbc5
commit
abec26cdfc
2 changed files with 13 additions and 7 deletions
|
@ -1696,10 +1696,13 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def delete_session(self, jid, thread_id):
|
def delete_session(self, jid, thread_id):
|
||||||
|
try:
|
||||||
del self.sessions[jid][thread_id]
|
del self.sessions[jid][thread_id]
|
||||||
|
|
||||||
if not self.sessions[jid]:
|
if not self.sessions[jid]:
|
||||||
del self.sessions[jid]
|
del self.sessions[jid]
|
||||||
|
except KeyError
|
||||||
|
print "jid %s should have been in %s, but it wasn't. missing session?" % (repr(jid), repr(self.sessions.keys())
|
||||||
|
|
||||||
def move_session(self, original_jid, thread_id, to_resource):
|
def move_session(self, original_jid, thread_id, to_resource):
|
||||||
'''moves a session to another resource.'''
|
'''moves a session to another resource.'''
|
||||||
|
@ -1722,9 +1725,12 @@ returns the session that we last sent a message to.'''
|
||||||
|
|
||||||
sessions_with_jid = self.sessions[jid].values()
|
sessions_with_jid = self.sessions[jid].values()
|
||||||
no_threadid_sessions = filter(lambda s: not s.received_thread_id, sessions_with_jid)
|
no_threadid_sessions = filter(lambda s: not s.received_thread_id, sessions_with_jid)
|
||||||
no_threadid_sessions.sort(key=lambda s: s.last_send)
|
|
||||||
|
|
||||||
|
if no_threadid_sessions:
|
||||||
|
no_threadid_sessions.sort(key=lambda s: s.last_send)
|
||||||
return no_threadid_sessions[-1]
|
return no_threadid_sessions[-1]
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
def make_new_session(self, jid, thread_id = None, type = 'chat'):
|
def make_new_session(self, jid, thread_id = None, type = 'chat'):
|
||||||
sess = EncryptedStanzaSession(self, common.xmpp.JID(jid), thread_id, type)
|
sess = EncryptedStanzaSession(self, common.xmpp.JID(jid), thread_id, type)
|
||||||
|
|
|
@ -117,7 +117,7 @@ class MessageControl:
|
||||||
|
|
||||||
if self.session:
|
if self.session:
|
||||||
print "starting a new session, dropping the old one!"
|
print "starting a new session, dropping the old one!"
|
||||||
gajim.connections[self.account].delete_session(self.contact.get_full_jid(), self.session.thread_id)
|
gajim.connections[self.account].delete_session(self.session.jid, self.session.thread_id)
|
||||||
|
|
||||||
self.session = session
|
self.session = session
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue