From 5e446d50a8f77b932449cd96a58f6cfa1af647a8 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Wed, 30 May 2018 19:21:56 +0300 Subject: Get rid of direct calls to 'session' Mnesia table Fixes #2439 --- src/mod_configure.erl | 32 +++++--------------------------- 1 file changed, 5 insertions(+), 27 deletions(-) (limited to 'src/mod_configure.erl') diff --git a/src/mod_configure.erl b/src/mod_configure.erl index 471e2bcd..74b3cc79 100644 --- a/src/mod_configure.erl +++ b/src/mod_configure.erl @@ -1552,39 +1552,17 @@ set_form(From, Host, ?NS_ADMINL(<<"delete-user">>), || {User, Server} <- ASL2], {result, undefined}; set_form(From, Host, ?NS_ADMINL(<<"end-user-session">>), - Lang, XData) -> + _Lang, XData) -> AccountString = get_value(<<"accountjid">>, XData), JID = jid:decode(AccountString), - LUser = JID#jid.luser, LServer = JID#jid.lserver, true = LServer == Host orelse get_permission_level(From) == global, - Xmlelement = xmpp:serr_policy_violation(<<"has been kicked">>, Lang), case JID#jid.lresource of - <<>> -> - SIs = mnesia:dirty_select(session, - [{#session{usr = {LUser, LServer, '_'}, - sid = '$1', - info = '$2', - _ = '_'}, - [], [{{'$1', '$2'}}]}]), - Pids = [P || {{_, P}, Info} <- SIs, - not proplists:get_bool(offline, Info)], - lists:foreach(fun(Pid) -> - Pid ! {kick, kicked_by_admin, Xmlelement} - end, Pids); - R -> - [{{_, Pid}, Info}] = mnesia:dirty_select( - session, - [{#session{usr = {LUser, LServer, R}, - sid = '$1', - info = '$2', - _ = '_'}, - [], [{{'$1', '$2'}}]}]), - case proplists:get_bool(offline, Info) of - true -> ok; - false -> Pid ! {kick, kicked_by_admin, Xmlelement} - end + <<>> -> + ejabberd_sm:kick_user(JID#jid.luser, JID#jid.lserver); + R -> + ejabberd_sm:kick_user(JID#jid.luser, JID#jid.lserver, R) end, {result, undefined}; set_form(From, Host, -- cgit v1.2.3