diff options
author | Matthew Wild <mwild1@gmail.com> | 2012-07-05 17:41:57 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2012-07-05 17:41:57 +0100 |
commit | b0282b758f6d2abaeb9d3ead0dc9e04c3ad13430 (patch) | |
tree | 205747ed5581214de833dac66288a24b65368e6c /plugins/muc/mod_muc.lua | |
parent | 2429531070ba2f2273a77c3512abbca5acda92ff (diff) | |
parent | ff8bd93299b7f9a46a5dc1ff9825ebde7637321e (diff) | |
download | prosody-b0282b758f6d2abaeb9d3ead0dc9e04c3ad13430.tar.gz prosody-b0282b758f6d2abaeb9d3ead0dc9e04c3ad13430.zip |
Merge (some of) trunk -> 0.9
Diffstat (limited to 'plugins/muc/mod_muc.lua')
-rw-r--r-- | plugins/muc/mod_muc.lua | 28 |
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; |