aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMickaël Rémond <mickael.remond@process-one.net>2006-05-22 10:17:22 +0000
committerMickaël Rémond <mickael.remond@process-one.net>2006-05-22 10:17:22 +0000
commit753e768090560ae2202c89922ba8ee4171c8ba7b (patch)
tree2ea47eac380cdfe4b942d3d509b07119d887cc07 /src
parent* src/ejabberd_sm.erl: An option to limit the number of opened sessions (diff)
* src/ejabberd_sm.erl: The max_user_sessions has been moved to
host configuration. * src/ejabberd.cfg.example: Likewise. * doc/guide.tex: Likewise. SVN Revision: 568
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd.cfg.example4
-rw-r--r--src/ejabberd_sm.erl22
2 files changed, 9 insertions, 17 deletions
diff --git a/src/ejabberd.cfg.example b/src/ejabberd.cfg.example
index 9b894de13..e8ef5a4c5 100644
--- a/src/ejabberd.cfg.example
+++ b/src/ejabberd.cfg.example
@@ -97,6 +97,9 @@
% Host name:
{hosts, ["localhost"]}.
+%% Define the maximum number of time a single user is allowed to connect:
+{max_user_sessions, 10}.
+
%% Anonymous login support:
%% auth_method: anonymous
%% anonymous_protocol: sasl_anon|login_anon|both
@@ -114,7 +117,6 @@
{listen,
[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
{max_stanza_size, 65536},
- {max_user_sessions, 10},
starttls, {certfile, "./ssl.pem"}]},
{5223, ejabberd_c2s, [{access, c2s},
{max_stanza_size, 65536},
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl
index 4e82e5632..ec985f5b0 100644
--- a/src/ejabberd_sm.erl
+++ b/src/ejabberd_sm.erl
@@ -43,7 +43,7 @@
-record(state, {}).
%% default value for the maximum number of user connections
--define(MAX_USER_SESSIONS, 10).
+-define(MAX_USER_SESSIONS, infinity).
%%====================================================================
%% API
@@ -534,7 +534,7 @@ check_max_sessions(LUser, LServer) ->
SIDs = mnesia:dirty_select(
session,
[{#session{sid = '$1', usr = {LUser, LServer, '_'}, _ = '_'}, [], ['$1']}]),
- MaxSessions = get_max_user_sessions(),
+ MaxSessions = get_max_user_sessions(LServer),
if length(SIDs) =< MaxSessions -> ok;
true -> {_, Pid} = lists:min(SIDs),
Pid ! replaced
@@ -544,21 +544,11 @@ check_max_sessions(LUser, LServer) ->
%% Get the user_max_session setting
%% This option defines the max number of time a given users are allowed to
%% log in
-%% This option is only used on c2s connections
-%% Defaults to 10
-%% Can be set to infinity
-get_max_user_sessions() ->
- case ejabberd_config:get_local_option(listen) of
+%% Defaults to infinity
+get_max_user_sessions(Host) ->
+ case ejabberd_config:get_local_option({max_user_sessions, Host}) of
undefined -> ?MAX_USER_SESSIONS;
- Listeners ->
- case lists:keysearch(ejabberd_c2s, 2, Listeners) of
- {value, {_Port, _Method, Opts}} ->
- case lists:keysearch(max_user_sessions, 1, Opts) of
- {value, {_, Max}} -> Max;
- _ -> ?MAX_USER_SESSIONS
- end;
- _ -> ?MAX_USER_SESSIONS
- end
+ Max -> Max
end.