diff options
author | Mickaël Rémond <mickael.remond@process-one.net> | 2006-05-22 10:17:22 +0000 |
---|---|---|
committer | Mickaël Rémond <mickael.remond@process-one.net> | 2006-05-22 10:17:22 +0000 |
commit | 753e768090560ae2202c89922ba8ee4171c8ba7b (patch) | |
tree | 2ea47eac380cdfe4b942d3d509b07119d887cc07 /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.example | 4 | ||||
-rw-r--r-- | src/ejabberd_sm.erl | 22 |
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. |