Ignore offline sessions
Let mod_admin_extra and mod_configure ignore offline sessions when querying the session table.
This commit is contained in:
parent
9c27f31d72
commit
bbb90b9928
|
@ -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) ->
|
||||||
|
|
|
@ -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, []};
|
||||||
|
|
Loading…
Reference in New Issue