From e58988484a03016df1a331d1389f03a0e7e1bb43 Mon Sep 17 00:00:00 2001 From: mathieui Date: Tue, 10 Sep 2019 23:13:04 +0200 Subject: Match the sender JID as well as the queryid in MAM results --- slixmpp/plugins/xep_0313/mam.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/slixmpp/plugins/xep_0313/mam.py b/slixmpp/plugins/xep_0313/mam.py index d407e2bf..da9ed17b 100644 --- a/slixmpp/plugins/xep_0313/mam.py +++ b/slixmpp/plugins/xep_0313/mam.py @@ -14,7 +14,7 @@ from typing import Any, Dict, Callable, Optional, Awaitable from slixmpp import JID from slixmpp.stanza import Message, Iq from slixmpp.xmlstream.handler import Collector -from slixmpp.xmlstream.matcher import StanzaPath +from slixmpp.xmlstream.matcher import MatchXMLMask from slixmpp.xmlstream import register_stanza_plugin from slixmpp.plugins import BasePlugin from slixmpp.plugins.xep_0313 import stanza @@ -87,11 +87,21 @@ class XEP_0313(BasePlugin): amount = value cb_data = {} + stanza_mask = self.xmpp.Message() + stanza_mask.xml.remove(stanza_mask.xml.find('{urn:xmpp:sid:0}origin-id')) + del stanza_mask['id'] + del stanza_mask['lang'] + stanza_mask['from'] = jid + stanza_mask['mam_result']['queryid'] = query_id + xml_mask = str(stanza_mask) + def pre_cb(query: Iq) -> None: + stanza_mask['mam_result']['queryid'] = query['id'] + xml_mask = str(stanza_mask) query['mam']['queryid'] = query['id'] collector = Collector( 'MAM_Results_%s' % query_id, - StanzaPath('message/mam_result@queryid=%s' % query['id'])) + MatchXMLMask(xml_mask)) self.xmpp.register_handler(collector) cb_data['collector'] = collector @@ -107,7 +117,7 @@ class XEP_0313(BasePlugin): collector = Collector( 'MAM_Results_%s' % query_id, - StanzaPath('message/mam_result@queryid=%s' % query_id)) + MatchXMLMask(xml_mask)) self.xmpp.register_handler(collector) def wrapped_cb(iq: Iq) -> None: -- cgit v1.2.3