diff options
author | Jonas Wielicki <jonas@wielicki.name> | 2017-12-09 17:57:14 +0100 |
---|---|---|
committer | Jonas Wielicki <jonas@wielicki.name> | 2017-12-09 17:57:14 +0100 |
commit | 9b16be0675e3b7ee8a68f3851b2e1323e5003db3 (patch) | |
tree | 966fe6eb346bb635c7cd7120939e286db24e9d33 /plugins/muc/muc.lib.lua | |
parent | 9e3e74ec9103aee699c20fcc508d99f776acc042 (diff) | |
download | prosody-9b16be0675e3b7ee8a68f3851b2e1323e5003db3.tar.gz prosody-9b16be0675e3b7ee8a68f3851b2e1323e5003db3.zip |
MUC: Ensure that <delay/> elements which match our from are stripped (fixes #1055)
Diffstat (limited to 'plugins/muc/muc.lib.lua')
-rw-r--r-- | plugins/muc/muc.lib.lua | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua index 0dfdd1aa..0040b99c 100644 --- a/plugins/muc/muc.lib.lua +++ b/plugins/muc/muc.lib.lua @@ -122,6 +122,22 @@ function room_mt:broadcast_presence(stanza, sid, code, nick) 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; |