Philipp Hörist pushed to branch master at gajim / gajim
Commits:
81566df8 by Philipp Hörist at 2017-07-30T23:04:50+02:00
Fix some regressions with MAM
- On single messages use the bare JID for DB querys
- Add more debug logging
- Some light refactoring
- - - - -
3 changed files:
- gajim/common/connection_handlers_events.py
- gajim/common/logger.py
- gajim/common/message_archiving.py
Changes:
=====================================
gajim/common/connection_handlers_events.py
=====================================
--- a/gajim/common/connection_handlers_events.py
+++ b/gajim/common/connection_handlers_events.py
@@ -1113,8 +1113,12 @@ class
MamDecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
base_network_events = []
def generate(self):
- is_pm = gajim.logger.jid_is_room_jid(self.with_.getStripped())
- if is_pm is None:
+ if not self.msgtxt:
+ # For example Chatstates, Receipts, Chatmarkers
+ log.debug('Received MAM message without text')
+ return False
+ self.is_pm = gajim.logger.jid_is_room_jid(self.with_.getStripped())
+ if self.is_pm is None:
# we don't know this JID, we need to disco it.
server = self.with_.getDomain()
if server not in self.conn.mam_awaiting_disco_result:
=====================================
gajim/common/logger.py
=====================================
--- a/gajim/common/logger.py
+++ b/gajim/common/logger.py
@@ -1139,15 +1139,15 @@ class Logger:
(account_jid_id,))
self._timeout_commit()
- def save_if_not_exists(self, with_, direction, tim, msg='', is_pm=False,
additional_data=None):
+ def save_if_not_exists(self, with_, direction, tim, msg, is_pm=False,
additional_data=None):
if additional_data is None:
additional_data = {}
- if not msg:
- return
if is_pm:
+ with_ = str(with_)
type_ = 'gc_msg'
else:
+ with_ = with_.getStripped()
if direction == 'from':
type_ = 'chat_msg_recv'
elif direction == 'to':
@@ -1156,19 +1156,22 @@ class Logger:
start_time = tim - 300 # 5 minutes arrount given time
end_time = tim + 300 # 5 minutes arrount given time
+ log.debug('start: %s, end: %s, jid: %s, message: %s',
+ start_time, end_time, with_, msg)
+
sql = '''
SELECT * FROM logs
NATURAL JOIN jids WHERE jid = ? AND message = ?
AND time BETWEEN ? AND ?
'''
- result = self.con.execute(sql, (str(with_), msg, start_time,
end_time)).fetchone()
+ result = self.con.execute(sql, (with_, msg, start_time,
end_time)).fetchone()
if result:
log.debug('Log already in DB, ignoring it')
return
log.debug('New log received from server archives, storing it')
- self.write(type_, str(with_), message=msg, tim=tim,
+ self.write(type_, with_, message=msg, tim=tim,
additional_data=additional_data, mam_query=True)
def _nec_gc_message_received(self, obj):
=====================================
gajim/common/message_archiving.py
=====================================
--- a/gajim/common/message_archiving.py
+++ b/gajim/common/message_archiving.py
@@ -83,17 +83,16 @@ class ConnectionArchive313:
# it's a groupchat
for with_, direction, tim, msg_txt in \
self.mam_awaiting_disco_result[obj.jid]:
- gajim.logger.get_jid_id(with_, 'ROOM')
+ gajim.logger.get_jid_id(with_.getStripped(), 'ROOM')
gajim.logger.save_if_not_exists(with_, direction, tim,
- msg=msg_txt, is_pm=True)
+ msg_txt, is_pm=True)
del self.mam_awaiting_disco_result[obj.jid]
return
# it's not a groupchat
for with_, direction, tim, msg_txt in \
self.mam_awaiting_disco_result[obj.jid]:
- gajim.logger.get_jid_id(with_)
- gajim.logger.save_if_not_exists(with_, direction, tim,
- msg=msg_txt)
+ gajim.logger.get_jid_id(with_.getStripped())
+ gajim.logger.save_if_not_exists(with_, direction, tim, msg_txt)
del self.mam_awaiting_disco_result[obj.jid]
def _nec_result_finished(self, obj):
@@ -123,7 +122,7 @@ class ConnectionArchive313:
if obj.conn.name != self.name:
return
gajim.logger.save_if_not_exists(obj.with_, obj.direction,
obj.timestamp,
- msg=obj.msgtxt, additional_data=obj.additional_data)
+ obj.msgtxt, is_pm=obj.is_pm, additional_data=obj.additional_data)
def get_query_id(self):
self.mam_query_id = self.connection.getAnID()
View it on GitLab:
https://dev.gajim.org/gajim/gajim/commit/81566df8a1f988c5820309ec2865b8ced895fc8f
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits