diff options
author | Waqas Hussain <waqas20@gmail.com> | 2009-11-25 21:40:44 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2009-11-25 21:40:44 +0500 |
commit | 24bd0394c83f8741278306eb3ba4483916aef7b0 (patch) | |
tree | 89be51f71c824f7b918c4dbf78d53c578d54a51f /plugins/muc/muc.lib.lua | |
parent | 95b463a3ee6dc6d93e1c7b39d043357a4c72f6b1 (diff) | |
download | prosody-24bd0394c83f8741278306eb3ba4483916aef7b0.tar.gz prosody-24bd0394c83f8741278306eb3ba4483916aef7b0.zip |
MUC: Improved handling of incoming groupchat messages (state preserved for possible later use).
Diffstat (limited to 'plugins/muc/muc.lib.lua')
-rw-r--r-- | plugins/muc/muc.lib.lua | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua index 3a185e17..0fb5223d 100644 --- a/plugins/muc/muc.lib.lua +++ b/plugins/muc/muc.lib.lua @@ -128,19 +128,21 @@ function room_mt:broadcast_presence(stanza, sid, code, nick) end end function room_mt:broadcast_message(stanza, historic) + local to = stanza.attr.to; for occupant, o_data in pairs(self._occupants) do for jid in pairs(o_data.sessions) do stanza.attr.to = jid; self:_route_stanza(stanza); end end + stanza.attr.to = to; if historic then -- add to history local history = self._data['history']; if not history then history = {}; self._data['history'] = history; end - -- stanza = st.clone(stanza); + stanza = st.clone(stanza); stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = muc_domain, stamp = datetime.datetime()}):up(); -- XEP-0203 stanza:tag("x", {xmlns = "jabber:x:delay", from = muc_domain, stamp = datetime.legacy()}):up(); -- XEP-0091 (deprecated) - t_insert(history, st.clone(st.preserialize(stanza))); + t_insert(history, st.preserialize(stanza)); while #history > history_length do t_remove(history, 1) end end end @@ -528,6 +530,7 @@ function room_mt:handle_to_room(origin, stanza) -- presence changes and groupcha else self:broadcast_message(stanza, true); end + stanza.attr.from = from; end elseif stanza.name == "message" and type == "error" and is_kickable_error(stanza) then local current_nick = self._jid_nick[stanza.attr.from]; |