# HG changeset patch
# User Jonas Wielicki <[email protected]>
# Date 1526569860 -7200
# Thu May 17 17:11:00 2018 +0200
# Node ID b828db4432de0ab634b4d44dd8880a969727e3bc
# Parent aaff40ec700128306b1b843247a098b5d291bb87
MUC: fix set_role invocation
diff -r aaff40ec7001 -r b828db4432de plugins/muc/muc.lib.lua
--- a/plugins/muc/muc.lib.lua Wed May 16 23:57:30 2018 +0100
+++ b/plugins/muc/muc.lib.lua Thu May 17 17:11:00 2018 +0200
@@ -852,7 +852,7 @@
if item.attr.affiliation and
item.attr.jid and not item.attr.role then
jid_affiliation[item.attr.jid]
= { ["affiliation"] = item.attr.affiliation, ["reason"] = reason };
elseif item.attr.role and
item.attr.nick and not item.attr.affiliation then
-
jidnick_role[item.attr.jid.."/"..item.attr.nick] = { ["role"] = item.attr.role,
["reason"] = reason };
+
jidnick_role[self.jid.."/"..item.attr.nick] = { ["role"] = item.attr.role,
["reason"] = reason };
else
origin.send(st.error_reply(stanza, "cancel", "bad-request"));
return;
@@ -1213,7 +1213,8 @@
--- Checks whether the given role changes in jidnick_role can be applied by
actor.
-- Note: Empty tables can always be applied and won't have any effect.
function room_mt:can_set_roles(actor, jidnick_role)
- for jidnick, role in pairs(jidnick_role) do
+ for jidnick, role_info in pairs(jidnick_role) do
+ local role = role_info["role"];
if role == "none" then role = nil; end
if role and role ~= "moderator" and role ~= "participant" and
role ~= "visitor" then return false, "modify", "not-acceptable"; end
local can_set, err_type, err_condition =
self:can_set_role(actor, jidnick, role)
@@ -1249,7 +1250,7 @@
:tag("reason"):text(reason or ""):up()
:up();
local presence_type = nil;
- if not role then -- kick
+ if not role or role == "none" then -- kick
presence_type = "unavailable";
self._occupants[occupant_jid] = nil;
for jid in pairs(occupant.sessions) do -- remove for
all sessions of the nick
@@ -1271,7 +1272,7 @@
if occupant.jid == jid then
bp = st.clone(p);
bp:add_child(x);
- modified_nicks[occupant_jid] = p;
+ modified_nicks[occupant_jid] = bp;
nb_modified_nicks = nb_modified_nicks + 1;
end
p:add_child(self_x);
--
You received this message because you are subscribed to the Google Groups
"prosody-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/prosody-dev.
For more options, visit https://groups.google.com/d/optout.