diff options
author | Kim Alvefur <zash@zash.se> | 2017-12-10 22:23:32 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2017-12-10 22:23:32 +0100 |
commit | ea34ed2c8b43da2141253af2d7034374fc5e38a3 (patch) | |
tree | a2aa21291ef6b870f4e68cb2a3cf56f968594342 /plugins/muc | |
parent | 253cf6e86d69a70909d221d36f8261770e1f3feb (diff) | |
parent | d993a7515e9ff0b90015493b27e7f7ff3e625793 (diff) | |
download | prosody-ea34ed2c8b43da2141253af2d7034374fc5e38a3.tar.gz prosody-ea34ed2c8b43da2141253af2d7034374fc5e38a3.zip |
Merge 0.9->0.10
Diffstat (limited to 'plugins/muc')
-rw-r--r-- | plugins/muc/muc.lib.lua | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua index 807fb2c3..8930feeb 100644 --- a/plugins/muc/muc.lib.lua +++ b/plugins/muc/muc.lib.lua @@ -99,6 +99,22 @@ function room_mt:broadcast_presence(stanza, sid, code, nick) end function room_mt:broadcast_message(stanza, historic) local to = stanza.attr.to; + local room_jid = self.jid; + + stanza:maptags(function (child) + if child.name == "delay" and child.attr["xmlns"] == "urn:xmpp:delay" then + if child.attr["from"] == room_jid then + return nil; + end + end + if child.name == "x" and child.attr["xmlns"] == "jabber:x:delay" then + if child.attr["from"] == room_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; @@ -116,8 +132,8 @@ function room_mt:save_to_history(stanza) stanza = st.clone(stanza); stanza.attr.to = ""; local stamp = datetime.datetime(); - stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = muc_domain, stamp = stamp}):up(); -- XEP-0203 - stanza:tag("x", {xmlns = "jabber:x:delay", from = muc_domain, stamp = datetime.legacy()}):up(); -- XEP-0091 (deprecated) + stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = self.jid, stamp = stamp}):up(); -- XEP-0203 + stanza:tag("x", {xmlns = "jabber:x:delay", from = self.jid, stamp = datetime.legacy()}):up(); -- XEP-0091 (deprecated) local entry = { stanza = stanza, stamp = stamp }; t_insert(history, entry); while #history > (self._data.history_length or default_history_length) do t_remove(history, 1) end |