mod_mam: Store only incoming errors
authorKim Alvefur <zash@zash.se>
Sun, 26 Apr 2020 14:28:00 +0200
changeset 10777 3e1046b39484
parent 10776 31e702c5f475
child 10778 207691ad98fe
mod_mam: Store only incoming errors Unclear if clients normally ever send error messages, but there may be locally generated bounces sent on behalf of local sessions.
plugins/mod_mam/mod_mam.lua
--- a/plugins/mod_mam/mod_mam.lua	Sun Apr 26 11:40:48 2020 +0200
+++ b/plugins/mod_mam/mod_mam.lua	Sun Apr 26 14:28:00 2020 +0200
@@ -263,7 +263,7 @@
 	return stanza;
 end
 
-local function should_store(stanza) --> boolean, reason: string
+local function should_store(stanza, c2s) --> boolean, reason: string
 	local st_type = stanza.attr.type or "normal";
 	-- FIXME pass direction of stanza and use that along with bare/full JID addressing
 	-- for more accurate MUC / type=groupchat check
@@ -272,7 +272,8 @@
 		-- Headline messages are ephemeral by definition
 		return false, "headline";
 	end
-	if st_type == "error" then
+	if st_type == "error" and not c2s then
+		-- Store delivery failure notifications so you know if your own messages were not delivered
 		return true, "bounce";
 	end
 	if st_type == "groupchat" then
@@ -334,7 +335,7 @@
 	-- Filter out <stanza-id> that claim to be from us
 	event.stanza = strip_stanza_id(stanza, store_user);
 
-	local should, why = should_store(stanza);
+	local should, why = should_store(stanza, c2s);
 	if not should then
 		log("debug", "Not archiving stanza: %s (%s)", stanza:top_tag(), why);
 		return;