diff options
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. |