aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_sm.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2014-05-08 21:28:12 +0400
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2014-05-08 21:39:53 +0400
commit181e7a823e73140fc67db4acbcedd2567f079a12 (patch)
tree337d564bc65ed638440c09afe68bbaf1631ddfb6 /src/ejabberd_sm.erl
parentTURN support (EJAB-1017) (diff)
Fix C2S session close on server shutdown
Diffstat (limited to 'src/ejabberd_sm.erl')
-rw-r--r--src/ejabberd_sm.erl13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl
index 094918cd9..9fc6a86ef 100644
--- a/src/ejabberd_sm.erl
+++ b/src/ejabberd_sm.erl
@@ -59,6 +59,7 @@
get_user_info/3,
get_user_ip/3,
get_max_user_sessions/2,
+ get_all_pids/0,
is_existing_resource/3
]).
@@ -283,13 +284,23 @@ dirty_get_my_sessions_list() ->
[{'==', {node, '$1'}, node()}],
['$_']}]).
+-spec get_vh_session_list(binary()) -> [ljid()].
+
get_vh_session_list(Server) ->
LServer = jlib:nameprep(Server),
mnesia:dirty_select(session,
[{#session{usr = '$1', _ = '_'},
[{'==', {element, 2, '$1'}, LServer}], ['$1']}]).
--spec get_vh_session_list(binary()) -> [ljid()].
+-spec get_all_pids() -> [pid()].
+
+get_all_pids() ->
+ mnesia:dirty_select(
+ session,
+ ets:fun2ms(
+ fun(#session{sid = {_, Pid}}) ->
+ Pid
+ end)).
get_vh_session_number(Server) ->
LServer = jlib:nameprep(Server),