aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/muc
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2012-07-05 17:41:57 +0100
committerMatthew Wild <mwild1@gmail.com>2012-07-05 17:41:57 +0100
commitb0282b758f6d2abaeb9d3ead0dc9e04c3ad13430 (patch)
tree205747ed5581214de833dac66288a24b65368e6c /plugins/muc
parent2429531070ba2f2273a77c3512abbca5acda92ff (diff)
parentff8bd93299b7f9a46a5dc1ff9825ebde7637321e (diff)
downloadprosody-b0282b758f6d2abaeb9d3ead0dc9e04c3ad13430.tar.gz
prosody-b0282b758f6d2abaeb9d3ead0dc9e04c3ad13430.zip
Merge (some of) trunk -> 0.9
Diffstat (limited to 'plugins/muc')
-rw-r--r--plugins/muc/mod_muc.lua28
1 files changed, 18 insertions, 10 deletions
diff --git a/plugins/muc/mod_muc.lua b/plugins/muc/mod_muc.lua
index 43b8423d..77ad2647 100644
--- a/plugins/muc/mod_muc.lua
+++ b/plugins/muc/mod_muc.lua
@@ -65,19 +65,27 @@ local function room_save(room, forced)
if forced then datamanager.store(nil, muc_host, "persistent", persistent_rooms); end
end
+local persistent_errors = false;
for jid in pairs(persistent_rooms) do
local node = jid_split(jid);
- local data = datamanager.load(node, muc_host, "config") or {};
- local room = muc_new_room(jid, {
- max_history_length = max_history_messages;
- });
- room._data = data._data;
- room._data.max_history_length = max_history_messages; -- Overwrite old max_history_length in data with current settings
- room._affiliations = data._affiliations;
- room.route_stanza = room_route_stanza;
- room.save = room_save;
- rooms[jid] = room;
+ local data = datamanager.load(node, muc_host, "config");
+ if data then
+ local room = muc_new_room(jid, {
+ max_history_length = max_history_messages;
+ });
+ room._data = data._data;
+ room._data.max_history_length = max_history_messages; -- Overwrite old max_history_length in data with current settings
+ room._affiliations = data._affiliations;
+ room.route_stanza = room_route_stanza;
+ room.save = room_save;
+ rooms[jid] = room;
+ else -- missing room data
+ persistent_rooms[jid] = nil;
+ module:log("error", "Missing data for room '%s', removing from persistent room list", jid);
+ persistent_errors = true;
+ end
end
+if persistent_errors then datamanager.store(nil, muc_host, "persistent", persistent_rooms); end
local host_room = muc_new_room(muc_host, {
max_history_length = max_history_messages;