MUC: Ensure that <delay/> elements which match our from are stripped (fixes #1055)
authorJonas Wielicki <jonas@wielicki.name>
Sat, 09 Dec 2017 17:57:14 +0100
changeset 8478 eb85b10e1fea
parent 8477 7ad9d7c4161c
child 8479 082d12728645
MUC: Ensure that <delay/> elements which match our from are stripped (fixes #1055)
plugins/muc/muc.lib.lua
--- a/plugins/muc/muc.lib.lua	Sat Dec 09 17:36:47 2017 +0100
+++ b/plugins/muc/muc.lib.lua	Sat Dec 09 17:57:14 2017 +0100
@@ -122,6 +122,22 @@
 end
 function room_mt:broadcast_message(stanza, historic)
 	local to = stanza.attr.to;
+	local muc_jid = self.jid;
+
+	stanza:maptags(function (child)
+		if child.name == "delay" and child.attr["xmlns"] == "urn:xmpp:delay" then
+			if child.attr["from"] == muc_jid then
+				return nil;
+			end
+		end
+		if child.name == "x" and child.attr["xmlns"] == "jabber:x:delay" then
+			if child.attr["from"] == muc_jid then
+				return nil;
+			end
+		end
+		return child;
+	end)
+
 	for occupant, o_data in pairs(self._occupants) do
 		for jid in pairs(o_data.sessions) do
 			stanza.attr.to = jid;