--- a/plugins/muc/muc.lib.lua Thu Mar 27 19:18:57 2014 -0400
+++ b/plugins/muc/muc.lib.lua Fri Mar 28 11:05:52 2014 -0400
@@ -1054,20 +1054,18 @@
if nick then item.attr.nick = select(3, jid_split(nick)); end
end
local actor = stanza.attr.from;
- local callback = function() origin.send(st.reply(stanza)); end
local reason = item:get_child_text("reason");
+ local success, errtype, err
if item.attr.affiliation and item.attr.jid and not item.attr.role then
- local success, errtype, err = self:set_affiliation(actor, item.attr.jid, item.attr.affiliation, callback, reason);
- if not success then origin.send(st.error_reply(stanza, errtype, err)); end
- return true;
+ success, errtype, err = self:set_affiliation(actor, item.attr.jid, item.attr.affiliation, reason);
elseif item.attr.role and item.attr.nick and not item.attr.affiliation then
- local success, errtype, err = self:set_role(actor, self.jid.."/"..item.attr.nick, item.attr.role, callback, reason);
- if not success then origin.send(st.error_reply(stanza, errtype, err)); end
- return true;
+ success, errtype, err = self:set_role(actor, self.jid.."/"..item.attr.nick, item.attr.role, reason);
else
- origin.send(st.error_reply(stanza, "cancel", "bad-request"));
- return true;
+ success, errtype, err = nil, "cancel", "bad-request";
end
+ if not success then origin.send(st.error_reply(stanza, errtype, err)); end
+ origin.send(st.reply(stanza));
+ return true;
end
function room_mt:handle_admin_query_get_command(origin, stanza)
@@ -1232,7 +1230,7 @@
local from = stanza:get_child("x", "http://jabber.org/protocol/muc#user"):get_child("invite").attr.from
local current_nick = room:get_occupant_jid(from)
log("debug", "%s invited %s into members only room %s, granting membership", from, invitee, room.jid);
- room:set_affiliation(from, invitee, "member", nil, "Invited by " .. current_nick)
+ room:set_affiliation(from, invitee, "member", "Invited by " .. current_nick)
end
end);
@@ -1305,7 +1303,7 @@
if not result and self._affiliations[host] == "outcast" then result = "outcast"; end -- host banned
return result;
end
-function room_mt:set_affiliation(actor, jid, affiliation, callback, reason)
+function room_mt:set_affiliation(actor, jid, affiliation, reason)
jid = jid_bare(jid);
if affiliation == "none" then affiliation = nil; end
if affiliation and affiliation ~= "outcast" and affiliation ~= "owner" and affiliation ~= "admin" and affiliation ~= "member" then
@@ -1315,7 +1313,6 @@
local actor_affiliation = self:get_affiliation(actor);
local target_affiliation = self:get_affiliation(jid);
if target_affiliation == affiliation then -- no change, shortcut
- if callback then callback(); end
return true;
end
if actor_affiliation ~= "owner" then
@@ -1352,7 +1349,6 @@
self:publicise_occupant_status(occupant, x, actor, reason);
end
if self.save then self:save(); end
- if callback then callback(); end
return true;
end
@@ -1380,7 +1376,7 @@
end
return nil, "cancel", "not-allowed";
end
-function room_mt:set_role(actor, occupant_jid, role, callback, reason)
+function room_mt:set_role(actor, occupant_jid, role, reason)
if role == "none" then role = nil; end
if role and role ~= "moderator" and role ~= "participant" and role ~= "visitor" then return nil, "modify", "not-acceptable"; end
local allowed, err_type, err_condition = self:can_set_role(actor, occupant_jid, role);
@@ -1395,7 +1391,6 @@
occupant.role = role;
self:save_occupant(occupant);
self:publicise_occupant_status(occupant, x, actor, reason);
- if callback then callback(); end
return true;
end