Ignore offline sessions

Let mod_admin_extra and mod_configure ignore offline sessions when
querying the session table.
This commit is contained in:
Holger Weiss 2016-06-01 01:01:54 +02:00
parent 9c27f31d72
commit bbb90b9928
2 changed files with 13 additions and 8 deletions

View File

@ -863,9 +863,10 @@ connected_users_vhost(Host) ->
dirty_get_sessions_list2() -> dirty_get_sessions_list2() ->
mnesia:dirty_select( mnesia:dirty_select(
session, session,
[{#session{usr = '$1', sid = '$2', priority = '$3', info = '$4', _ = '_'}, [{#session{usr = '$1', sid = {'$2', '$3'}, priority = '$4', info = '$5',
[], _ = '_'},
[['$1', '$2', '$3', '$4']]}]). [{is_pid, '$3'}],
[['$1', {{'$2', '$3'}}, '$4', '$5']]}]).
%% Make string more print-friendly %% Make string more print-friendly
stringize(String) -> stringize(String) ->
@ -900,7 +901,9 @@ user_sessions_info(User, Host) ->
{'EXIT', _Reason} -> {'EXIT', _Reason} ->
[]; [];
Ss -> Ss ->
Ss lists:filter(fun(#session{sid = {_, Pid}}) ->
is_pid(Pid)
end, Ss)
end, end,
lists:map( lists:map(
fun(Session) -> fun(Session) ->

View File

@ -1917,17 +1917,19 @@ set_form(From, Host, ?NS_ADMINL(<<"end-user-session">>),
case JID#jid.lresource of case JID#jid.lresource of
<<>> -> <<>> ->
SIDs = mnesia:dirty_select(session, SIDs = mnesia:dirty_select(session,
[{#session{sid = '$1', [{#session{sid = {'$1', '$2'},
usr = {LUser, LServer, '_'}, usr = {LUser, LServer, '_'},
_ = '_'}, _ = '_'},
[], ['$1']}]), [{is_pid, '$2'}],
[{{'$1', '$2'}}]}]),
[Pid ! {kick, kicked_by_admin, Xmlelement} || {_, Pid} <- SIDs]; [Pid ! {kick, kicked_by_admin, Xmlelement} || {_, Pid} <- SIDs];
R -> R ->
[{_, Pid}] = mnesia:dirty_select(session, [{_, Pid}] = mnesia:dirty_select(session,
[{#session{sid = '$1', [{#session{sid = {'$1', '$2'},
usr = {LUser, LServer, R}, usr = {LUser, LServer, R},
_ = '_'}, _ = '_'},
[], ['$1']}]), [{is_pid, '$2'}],
[{{'$1', '$2'}}]}]),
Pid ! {kick, kicked_by_admin, Xmlelement} Pid ! {kick, kicked_by_admin, Xmlelement}
end, end,
{result, []}; {result, []};