From 650bdae5d9aa05abd20e6b7c4832358a89ffa360 Mon Sep 17 00:00:00 2001 From: Evgeny Khramtsov Date: Sun, 24 Nov 2019 15:43:38 +0300 Subject: Make sure IQ result is correctly routed on account removal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks to Philipp Hörist for spotting this --- src/mod_register.erl | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src') 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)) -- cgit v1.2.3