MUC: Be more careful with deserialization of rooms, fix case where a bare jid has...
authorKim Alvefur <zash@zash.se>
Wed, 27 Apr 2016 16:55:49 +0000 (18:55 +0200)
committerKim Alvefur <zash@zash.se>
Wed, 27 Apr 2016 16:55:49 +0000 (18:55 +0200)
plugins/muc/muc.lib.lua

index 14aad42c329d7cca1db896c92924f26d85af56f9..ce6c57840819c30010c87ccc5c18323e2064bcb1 100644 (file)
@@ -1283,10 +1283,10 @@ function _M.restore_room(frozen)
        for jid, data in pairs(frozen) do
                local node, host, resource = jid_split(jid);
                if node or host:sub(1,1) ~= "_" then
-                       if not resource then
+                       if not resource and type(data) == "string" then
                                -- bare jid: affiliation
                                room._affiliations[jid] = data;
-                       elseif host == room_host and node == room_name then
+                       elseif host == room_host and node == room_name and resource then
                                -- full room jid: bare real jid and role
                                local bare_jid = data.bare_jid;
                                local   occupant = occupant_lib.new(bare_jid, jid);