diff options
author | Alexey Shchepin <alexey@process-one.net> | 2007-11-25 15:35:20 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2007-11-25 15:35:20 +0000 |
commit | 65a7bb7d2a71cafd5228d082cb8640da0bae9c5a (patch) | |
tree | 28f82fa6e1ec0e2a95937c6165a08393ac42cf29 | |
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-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/ejabberd_sm.erl | 15 |
2 files changed, 14 insertions, 6 deletions
@@ -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. |