aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2007-11-25 15:35:20 +0000
committerAlexey Shchepin <alexey@process-one.net>2007-11-25 15:35:20 +0000
commit65a7bb7d2a71cafd5228d082cb8640da0bae9c5a (patch)
tree28f82fa6e1ec0e2a95937c6165a08393ac42cf29
parent* src/ejabberd_config.erl: Improved error message when ejabberd (diff)
* src/ejabberd_sm.erl: Optimized check_max_sessions (thanks to
Christophe Romain) SVN Revision: 975
-rw-r--r--ChangeLog5
-rw-r--r--src/ejabberd_sm.erl15
2 files changed, 14 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 998285cab..105faa43a 100644
--- 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
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl
index d7d573d6b..051d18bdf 100644
--- a/src/ejabberd_sm.erl
+++ b/src/ejabberd_sm.erl
@@ -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.