Merge 0.10->trunk
[prosody.git] / plugins / muc / muc.lib.lua
index eb992aa3d42616358906101d45ccf822b87386f3..3ab9656c2f72619a18fce0ab25eb904664c2c519 100644 (file)
@@ -577,7 +577,7 @@ function room_mt:handle_normal_presence(origin, stanza)
                end
                self:save_occupant(dest_occupant);
 
-               if orig_occupant == nil then
+               if orig_occupant == nil or muc_x then
                        -- Send occupant list to newly joined user
                        self:send_occupant_list(real_jid, function(nick, occupant) -- luacheck: ignore 212
                                -- Don't include self
@@ -598,7 +598,7 @@ function room_mt:handle_normal_presence(origin, stanza)
                        self:route_stanza(pr);
                end
 
-               if orig_occupant == nil then
+               if orig_occupant == nil or muc_x then
                        if is_first_dest_session then
                                module:fire_event("muc-occupant-joined", {
                                        room = self;
@@ -872,7 +872,8 @@ function room_mt:handle_admin_query_get_command(origin, stanza)
                -- You need to be at least an admin, and be requesting info about your affifiliation or lower
                -- e.g. an admin can't ask for a list of owners
                local affiliation_rank = valid_affiliations[affiliation or "none"];
-               if affiliation_rank >= valid_affiliations.admin and affiliation_rank >= _aff_rank then
+               if affiliation_rank >= valid_affiliations.admin and affiliation_rank >= _aff_rank
+               or self:get_members_only() and self:get_whois() == "anyone" and affiliation_rank >= valid_affiliations.member then
                        local reply = st.reply(stanza):query("http://jabber.org/protocol/muc#admin");
                        for jid in self:each_affiliation(_aff or "none") do
                                reply:tag("item", {affiliation = _aff, jid = jid}):up();