aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeny Khramtsov <ekhramtsov@process-one.net>2019-11-24 15:43:38 +0300
committerEvgeny Khramtsov <ekhramtsov@process-one.net>2019-11-24 15:43:38 +0300
commit650bdae5d9aa05abd20e6b7c4832358a89ffa360 (patch)
tree5e94b4d9f3b2caa78c412c2fe1c86f1d64430f28 /src
parentFix acl reloading (diff)
Make sure IQ result is correctly routed on account removal
Thanks to Philipp Hörist for spotting this
Diffstat (limited to 'src')
-rw-r--r--src/mod_register.erl18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/mod_register.erl b/src/mod_register.erl
index 9304f8b44..31bb52c9d 100644
--- a/src/mod_register.erl
+++ b/src/mod_register.erl
@@ -131,12 +131,24 @@ process_iq(#iq{type = set, lang = Lang, to = To, from = From,
if is_binary(User) ->
case From of
#jid{user = User, lserver = Server} ->
+ ResIQ = xmpp:make_iq_result(IQ),
+ ejabberd_router:route(ResIQ),
ejabberd_auth:remove_user(User, Server),
- xmpp:make_iq_result(IQ);
+ ignore;
_ ->
if is_binary(Password) ->
- ejabberd_auth:remove_user(User, Server, Password),
- xmpp:make_iq_result(IQ);
+ case ejabberd_auth:check_password(
+ User, <<"">>, Server, Password) of
+ true ->
+ ResIQ = xmpp:make_iq_result(IQ),
+ ejabberd_router:route(ResIQ),
+ ejabberd_auth:remove_user(User, Server),
+ ignore;
+ false ->
+ Txt = ?T("Incorrect password"),
+ xmpp:make_error(
+ IQ, xmpp:err_forbidden(Txt, Lang))
+ end;
true ->
Txt = ?T("No 'password' found in this query"),
xmpp:make_error(IQ, xmpp:err_bad_request(Txt, Lang))