aboutsummaryrefslogtreecommitdiff
path: root/src/mod_configure.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_configure.erl')
-rw-r--r--src/mod_configure.erl42
1 files changed, 27 insertions, 15 deletions
diff --git a/src/mod_configure.erl b/src/mod_configure.erl
index 9d4086559..d0e0166a4 100644
--- a/src/mod_configure.erl
+++ b/src/mod_configure.erl
@@ -35,7 +35,8 @@
get_local_features/5, get_local_items/5,
adhoc_local_items/4, adhoc_local_commands/4,
get_sm_identity/5, get_sm_features/5, get_sm_items/5,
- adhoc_sm_items/4, adhoc_sm_commands/4, mod_opt_type/1]).
+ adhoc_sm_items/4, adhoc_sm_commands/4, mod_opt_type/1,
+ depends/2]).
-include("ejabberd.hrl").
-include("logger.hrl").
@@ -95,6 +96,9 @@ stop(Host) ->
gen_iq_handler:remove_iq_handler(ejabberd_sm, Host,
?NS_COMMANDS).
+depends(_Host, _Opts) ->
+ [{mod_adhoc, hard}, {mod_last, soft}].
+
%%%-----------------------------------------------------------------------
-define(INFO_IDENTITY(Category, Type, Name, Lang),
@@ -1913,21 +1917,29 @@ set_form(From, Host, ?NS_ADMINL(<<"end-user-session">>),
Xmlelement = ?SERRT_POLICY_VIOLATION(Lang, <<"has been kicked">>),
case JID#jid.lresource of
<<>> ->
- SIDs = mnesia:dirty_select(session,
- [{#session{sid = {'$1', '$2'},
- usr = {LUser, LServer, '_'},
- _ = '_'},
- [{is_pid, '$2'}],
- [{{'$1', '$2'}}]}]),
- [Pid ! {kick, kicked_by_admin, Xmlelement} || {_, Pid} <- SIDs];
+ 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}] = mnesia:dirty_select(session,
- [{#session{sid = {'$1', '$2'},
- usr = {LUser, LServer, R},
- _ = '_'},
- [{is_pid, '$2'}],
- [{{'$1', '$2'}}]}]),
- Pid ! {kick, kicked_by_admin, Xmlelement}
+ [{{_, 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
end,
{result, []};
set_form(From, Host,