summaryrefslogtreecommitdiff
path: root/src/ejabberd_sm.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-13 12:03:39 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-13 12:03:39 +0300
commit0baaad30b176aa8b1d1d485fb8e113eb13d2bdf3 (patch)
treeb5186d78d598e9b94f26646ef11e8c24ac1edd7c /src/ejabberd_sm.erl
parentFix some corner cases while re-reading RFC6120 (diff)
Implement database backend interface for MUC, BOSH and auth_anonyous
Diffstat (limited to 'src/ejabberd_sm.erl')
-rw-r--r--src/ejabberd_sm.erl16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl
index 327c79b6..5eb67114 100644
--- a/src/ejabberd_sm.erl
+++ b/src/ejabberd_sm.erl
@@ -64,6 +64,7 @@
user_resources/2,
kick_user/2,
get_session_pid/3,
+ get_user_info/2,
get_user_info/3,
get_user_ip/3,
get_max_user_sessions/2,
@@ -215,6 +216,17 @@ get_user_ip(User, Server, Resource) ->
proplists:get_value(ip, Session#session.info)
end.
+-spec get_user_info(binary(), binary()) -> [{binary(), info()}].
+get_user_info(User, Server) ->
+ LUser = jid:nodeprep(User),
+ LServer = jid:nameprep(Server),
+ Mod = get_sm_backend(LServer),
+ Ss = online(Mod:get_sessions(LUser, LServer)),
+ [{LResource, [{node, node(Pid)}|Info]}
+ || #session{usr = {_, _, LResource},
+ info = Info,
+ sid = {_, Pid}} <- clean_session_list(Ss)].
+
-spec get_user_info(binary(), binary(), binary()) -> info() | offline.
get_user_info(User, Server, Resource) ->
@@ -228,9 +240,7 @@ get_user_info(User, Server, Resource) ->
Ss ->
Session = lists:max(Ss),
Node = node(element(2, Session#session.sid)),
- Conn = proplists:get_value(conn, Session#session.info),
- IP = proplists:get_value(ip, Session#session.info),
- [{node, Node}, {conn, Conn}, {ip, IP}]
+ [{node, Node}|Session#session.info]
end.
-spec set_presence(sid(), binary(), binary(), binary(),