]> granicus.if.org Git - ejabberd/commitdiff
ejabberd_sm: Fix get_session_sid/3
authorHolger Weiss <holger@zedat.fu-berlin.de>
Tue, 19 Dec 2017 17:59:25 +0000 (18:59 +0100)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Tue, 19 Dec 2017 17:59:25 +0000 (18:59 +0100)
Let get_session_sid/3 cope with multiple session table entries for a
given resource.

src/ejabberd_sm.erl

index 3df1d88e0ad4b851f81f82bcb84c8b7590f39659..97e599253b544a959c664c67ffeff695ce00a028 100644 (file)
@@ -314,8 +314,11 @@ get_session_sid(User, Server, Resource) ->
     LResource = jid:resourceprep(Resource),
     Mod = get_sm_backend(LServer),
     case online(get_sessions(Mod, LUser, LServer, LResource)) of
-       [#session{sid = SID}] -> SID;
-       _ -> none
+       [] ->
+           none;
+       Ss ->
+           #session{sid = SID} = lists:max(Ss),
+           SID
     end.
 
 -spec get_session_sids(binary(), binary()) -> [sid()].