diff options
author | Matthew Wild <mwild1@gmail.com> | 2018-09-14 18:06:12 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2018-09-14 18:06:12 +0100 |
commit | fdb852fbbbb9e5da8e72a380e061f662d10f11c7 (patch) | |
tree | 50a1d49da9c0d517c8c1d8ad49c89cd93397a322 /plugins | |
parent | aaa28d9ab043d4f6b0f07f659f2ce5747db88486 (diff) | |
download | prosody-fdb852fbbbb9e5da8e72a380e061f662d10f11c7.tar.gz prosody-fdb852fbbbb9e5da8e72a380e061f662d10f11c7.zip |
MUC: Don't kick user of a reserved nick if it's theirs (thanks pep.)
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/muc/muc.lib.lua | 5 |
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); |