aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/muc
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2018-09-14 18:06:12 +0100
committerMatthew Wild <mwild1@gmail.com>2018-09-14 18:06:12 +0100
commitc59016f3d4dbf8805dfccbee7cc7a189ccf82bb1 (patch)
tree50a1d49da9c0d517c8c1d8ad49c89cd93397a322 /plugins/muc
parentfa6dce05f891682dc5c10a6e2da4f0d4eb65ec64 (diff)
downloadprosody-c59016f3d4dbf8805dfccbee7cc7a189ccf82bb1.tar.gz
prosody-c59016f3d4dbf8805dfccbee7cc7a189ccf82bb1.zip
MUC: Don't kick user of a reserved nick if it's theirs (thanks pep.)
Diffstat (limited to 'plugins/muc')
-rw-r--r--plugins/muc/muc.lib.lua5
1 files changed, 4 insertions, 1 deletions
diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua
index 341a848d..4d986457 100644
--- a/plugins/muc/muc.lib.lua
+++ b/plugins/muc/muc.lib.lua
@@ -930,9 +930,12 @@ function room_mt:handle_admin_query_set_command(origin, stanza)
local registration_data;
if item.attr.nick then
local room_nick = self.jid.."/"..item.attr.nick;
- if self:get_occupant_by_nick(room_nick) then
+ local existing_occupant = self:get_occupant_by_nick(room_nick);
+ if existing_occupant and existing_occupant.bare_jid ~= item.attr.jid then
+ module:log("debug", "Existing occupant for %s: %s does not match %s", room_nick, existing_occupant.bare_jid, item.attr.jid);
self:set_role(true, room_nick, nil, "This nickname is reserved");
end
+ module:log("debug", "Reserving %s for %s (%s)", item.attr.nick, item.attr.jid, item.attr.affiliation);
registration_data = { reserved_nickname = item.attr.nick };
end
success, errtype, err = self:set_affiliation(actor, item.attr.jid, item.attr.affiliation, reason, registration_data);