aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_sm.erl
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2017-07-20 20:22:50 +0200
committerHolger Weiss <holger@zedat.fu-berlin.de>2017-07-20 20:22:50 +0200
commitd6f1d3df5b5a75f618bcc6eeb6425bc47dfd84d2 (patch)
tree561889efbb51eee8f164177369c92a174c5d7084 /src/ejabberd_sm.erl
parentFix errors when running ejabberdctl as root (diff)
Support XEP-0357: Push Notifications
Closes #1379.
Diffstat (limited to 'src/ejabberd_sm.erl')
-rw-r--r--src/ejabberd_sm.erl20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl
index 344febb5d..302cfded4 100644
--- a/src/ejabberd_sm.erl
+++ b/src/ejabberd_sm.erl
@@ -66,6 +66,8 @@
user_resources/2,
kick_user/2,
get_session_pid/3,
+ get_session_sid/3,
+ get_session_sids/2,
get_user_info/2,
get_user_info/3,
get_user_ip/3,
@@ -292,15 +294,31 @@ close_session_unset_presence(SID, User, Server,
-spec get_session_pid(binary(), binary(), binary()) -> none | pid().
get_session_pid(User, Server, Resource) ->
+ case get_session_sid(User, Server, Resource) of
+ {_, PID} -> PID;
+ none -> none
+ end.
+
+-spec get_session_sid(binary(), binary(), binary()) -> none | sid().
+
+get_session_sid(User, Server, Resource) ->
LUser = jid:nodeprep(User),
LServer = jid:nameprep(Server),
LResource = jid:resourceprep(Resource),
Mod = get_sm_backend(LServer),
case online(get_sessions(Mod, LUser, LServer, LResource)) of
- [#session{sid = {_, Pid}}] -> Pid;
+ [#session{sid = SID}] -> SID;
_ -> none
end.
+-spec get_session_sids(binary(), binary()) -> [sid()].
+
+get_session_sids(User, Server) ->
+ LUser = jid:nodeprep(User),
+ LServer = jid:nameprep(Server),
+ Mod = get_sm_backend(LServer),
+ online(get_sessions(Mod, LUser, LServer)).
+
-spec set_offline_info(sid(), binary(), binary(), binary(), info()) -> ok.
set_offline_info(SID, User, Server, Resource, Info) ->