]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_sm.erl: Optimized check_max_sessions (thanks to
authorAlexey Shchepin <alexey@process-one.net>
Sun, 25 Nov 2007 15:35:20 +0000 (15:35 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Sun, 25 Nov 2007 15:35:20 +0000 (15:35 +0000)
Christophe Romain)

SVN Revision: 975

ChangeLog
src/ejabberd_sm.erl

index 998285cabf8e27eef660fd38efea069dc5a796f9..105faa43a550473264ca5e88c38cc89de8f5c1b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-25  Alexey Shchepin  <alexey@process-one.net>
+
+       * src/ejabberd_sm.erl: Optimized check_max_sessions (thanks to
+       Christophe Romain)
+
 2007-11-22  Mickael Remond  <mremond@process-one.net>
 
        * src/ejabberd_config.erl: Improved error message when ejabberd
index d7d573d6b4fd1d63b8e353ccabebaea760281ee8..051d18bdfd5a1c66838df4cb3a89b3d6e6fad03e 100644 (file)
@@ -540,13 +540,16 @@ check_existing_resources(LUser, LServer, LResource) ->
 check_max_sessions(LUser, LServer) ->
     %% If the max number of sessions for a given is reached, we replace the
     %% first one
-    SIDs =  mnesia:dirty_select(
-             session,
-             [{#session{sid = '$1', usr = {LUser, LServer, '_'}, _ = '_'}, [], ['$1']}]),
+    SIDs = mnesia:dirty_select(
+            session,
+            [{#session{us = {LUser, LServer}, _ = '_'}, [], [[]]}]),
     MaxSessions = get_max_user_sessions(LUser, LServer),
-    if length(SIDs) =< MaxSessions -> ok;
-       true -> {_, Pid} = lists:min(SIDs),
-               Pid ! replaced
+    if
+       length(SIDs) =< MaxSessions ->
+           ok;
+       true ->
+           {_, Pid} = lists:min(SIDs),
+           Pid ! replaced
     end.