aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2006-11-23 06:34:05 +0000
committerAlexey Shchepin <alexey@process-one.net>2006-11-23 06:34:05 +0000
commit661a34ccfc3355df8a257dd579bc3f2cbdb2ba87 (patch)
tree43f3c6de244b5ffda07c0bccfba960ac94bb24f2 /src
parentSVN Revision: 679 (diff)
* src/eldap/eldap.erl: Bugfix (thanks to Evgeniy Khramtsov)
* src/ejabberd_sm.erl: The max_user_sessions option is now configured via access rule * src/ejabberd.cfg.example: Likewise SVN Revision: 680
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd.cfg.example2
-rw-r--r--src/ejabberd_sm.erl12
-rw-r--r--src/eldap/eldap.erl2
3 files changed, 9 insertions, 7 deletions
diff --git a/src/ejabberd.cfg.example b/src/ejabberd.cfg.example
index 56ebe5ea0..64ac4353a 100644
--- a/src/ejabberd.cfg.example
+++ b/src/ejabberd.cfg.example
@@ -100,7 +100,7 @@
{hosts, ["localhost"]}.
%% Define the maximum number of time a single user is allowed to connect:
-{max_user_sessions, 10}.
+{access, max_user_sessions, [{10, all}]}.
%% Anonymous login support:
%% auth_method: anonymous
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl
index 7f4d6b87a..c320b4bef 100644
--- a/src/ejabberd_sm.erl
+++ b/src/ejabberd_sm.erl
@@ -515,7 +515,7 @@ check_max_sessions(LUser, LServer) ->
SIDs = mnesia:dirty_select(
session,
[{#session{sid = '$1', usr = {LUser, LServer, '_'}, _ = '_'}, [], ['$1']}]),
- MaxSessions = get_max_user_sessions(LServer),
+ MaxSessions = get_max_user_sessions(LUser, LServer),
if length(SIDs) =< MaxSessions -> ok;
true -> {_, Pid} = lists:min(SIDs),
Pid ! replaced
@@ -526,10 +526,12 @@ check_max_sessions(LUser, LServer) ->
%% This option defines the max number of time a given users are allowed to
%% log in
%% Defaults to infinity
-get_max_user_sessions(Host) ->
- case ejabberd_config:get_local_option({max_user_sessions, Host}) of
- undefined -> ?MAX_USER_SESSIONS;
- Max -> Max
+get_max_user_sessions(LUser, Host) ->
+ case acl:match_rule(
+ Host, max_user_sessions, jlib:make_jid(LUser, Host, "")) of
+ Max when is_integer(Max) -> Max;
+ infinity -> infinity;
+ _ -> ?MAX_USER_SESSIONS
end.
diff --git a/src/eldap/eldap.erl b/src/eldap/eldap.erl
index 894982e82..1bf64b2b4 100644
--- a/src/eldap/eldap.erl
+++ b/src/eldap/eldap.erl
@@ -713,7 +713,7 @@ recvd_wait_bind_response(Pkt, S) ->
check_id(S#eldap.id, Msg#'LDAPMessage'.messageID),
case Msg#'LDAPMessage'.protocolOp of
{bindResponse, Result} ->
- case Result#'LDAPResult'.resultCode of
+ case Result#'BindResponse'.resultCode of
success -> bound;
Error -> {fail_bind, Error}
end