don't create a new session when we get an error message in a pm. Fixes #7435
This commit is contained in:
parent
7ae5a200d8
commit
a8151d8dc2
2 changed files with 22 additions and 2 deletions
|
@ -1367,6 +1367,17 @@ class ConnectionHandlersBase:
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def get_latest_session(self, jid):
|
||||||
|
"""
|
||||||
|
Get the session that we last sent a message to
|
||||||
|
"""
|
||||||
|
if jid not in self.sessions:
|
||||||
|
return None
|
||||||
|
sessions = self.sessions[jid].values()
|
||||||
|
if not sessions:
|
||||||
|
return None
|
||||||
|
return sorted(sessions, key=operator.attrgetter('last_send'))[-1]
|
||||||
|
|
||||||
def find_controlless_session(self, jid, resource=None):
|
def find_controlless_session(self, jid, resource=None):
|
||||||
"""
|
"""
|
||||||
Find an active session that doesn't have a control attached
|
Find an active session that doesn't have a control attached
|
||||||
|
|
|
@ -1109,6 +1109,15 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
|
||||||
|
|
||||||
self.session = None
|
self.session = None
|
||||||
if self.mtype != 'groupchat':
|
if self.mtype != 'groupchat':
|
||||||
|
if gajim.interface.is_pm_contact(self.fjid, account) and \
|
||||||
|
self.mtype == 'error':
|
||||||
|
self.session = self.conn.find_session(self.fjid, self.thread_id)
|
||||||
|
if not self.session:
|
||||||
|
self.session = self.conn.get_latest_session(self.fjid)
|
||||||
|
if not self.session:
|
||||||
|
self.session = self.conn.make_new_session(self.fjid,
|
||||||
|
self.thread_id, type_='pm')
|
||||||
|
else:
|
||||||
self.session = self.conn.get_or_create_session(self.fjid,
|
self.session = self.conn.get_or_create_session(self.fjid,
|
||||||
self.thread_id)
|
self.thread_id)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue