mod_muc_mam: Have stanza-id filtering over all groupchat messages, not just ones considered for history
--- a/plugins/mod_muc_mam.lua Fri Apr 27 15:26:29 2018 +0200
+++ b/plugins/mod_muc_mam.lua Sat Apr 28 00:47:08 2018 +0200
@@ -303,14 +303,13 @@
return true;
end, 1);
--- Handle messages
-local function save_to_history(self, stanza)
- local room_node, room_host = jid_split(self.jid);
+module:hook("muc-broadcast-messages", function (event)
+ local room, stanza = event.room, event.stanza;
-- Filter out <stanza-id> that claim to be from us
stanza:maptags(function (tag)
if tag.name == "stanza-id" and tag.attr.xmlns == xmlns_st_id
- and jid_prep(tag.attr.by) == self.jid then
+ and jid_prep(tag.attr.by) == room.jid then
return nil;
end
if tag.name == "x" and tag.attr.xmlns == xmlns_muc_user then
@@ -319,6 +318,12 @@
return tag;
end);
+end, 0);
+
+-- Handle messages
+local function save_to_history(self, stanza)
+ local room_node, room_host = jid_split(self.jid);
+
local stored_stanza = stanza;
if stanza.name == "message" and self:get_whois() == "anyone" then