Commit ddd807f3 authored by Yann Leboulanger's avatar Yann Leboulanger
Browse files

don't create a new session when we get an error message in a pm. Fixes #7435

parent 7f48839b
......@@ -1367,6 +1367,17 @@ class ConnectionHandlersBase:
else:
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):
"""
Find an active session that doesn't have a control attached
......
......@@ -1109,8 +1109,17 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
self.session = None
if self.mtype != 'groupchat':
self.session = self.conn.get_or_create_session(self.fjid,
self.thread_id)
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.thread_id)
if self.thread_id and not self.session.received_thread_id:
self.session.received_thread_id = True
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment