projects
/
prosody.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
MUC: Include the very last message in serialized form to keep it across eviction...
[prosody.git]
/
plugins
/
muc
/
muc.lib.lua
diff --git
a/plugins/muc/muc.lib.lua
b/plugins/muc/muc.lib.lua
index 337d2ae41f364a48f291f6cac4c54f47e5fddaf0..071f1f8b01f05eaf1a90e86233adf20c7052fcd5 100644
(file)
--- a/
plugins/muc/muc.lib.lua
+++ b/
plugins/muc/muc.lib.lua
@@
-1322,6
+1322,11
@@
function room_mt:freeze(live)
frozen[jid] = st.preserialize(presence);
end
end
frozen[jid] = st.preserialize(presence);
end
end
+ local history = self._history;
+ if history then
+ frozen._last_message = st.preserialize(history[#history].stanza);
+ frozen._last_message_at = history[#history].timestamp;
+ end
end
return frozen;
end
end
return frozen;
end
@@
-1337,6
+1342,13
@@
function _M.restore_room(frozen)
local room_jid = frozen._jid;
local room = _M.new_room(room_jid, frozen._data);
local room_jid = frozen._jid;
local room = _M.new_room(room_jid, frozen._data);
+ if frozen._last_message and frozen._last_message_at then
+ room._history = {
+ { stanza = st.deserialize(frozen._last_message),
+ timestamp = frozen._last_message_at, },
+ };
+ end
+
local occupants = {};
local occupant_sessions = {};
local room_name, room_host = jid_split(room_jid);
local occupants = {};
local occupant_sessions = {};
local room_name, room_host = jid_split(room_jid);