diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2017-07-20 20:22:50 +0200 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2017-07-20 20:22:50 +0200 |
commit | d6f1d3df5b5a75f618bcc6eeb6425bc47dfd84d2 (patch) | |
tree | 561889efbb51eee8f164177369c92a174c5d7084 /src/ejabberd_sm.erl | |
parent | Fix 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.erl | 20 |
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) -> |