diff options
author | Christophe Romain <cromain@users.noreply.github.com> | 2017-08-04 12:58:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-04 12:58:06 +0200 |
commit | 766b7c65a6841889220dffca766b8524f12df68d (patch) | |
tree | 3db1ea9ab36bafcbe89aeb4e4751a090c24a1cc3 /src/ejabberd_sm.erl | |
parent | Remove unused 'managers' option, related to the deferred XEP-0321 (#1443) (diff) | |
parent | Add mod_push_keepalive (diff) |
Merge pull request #1881 from weiss/push
Support XEP-0357: Push Notifications
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 c47bfcead..f7f7447bf 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) -> |