From 661a34ccfc3355df8a257dd579bc3f2cbdb2ba87 Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Thu, 23 Nov 2006 06:34:05 +0000 Subject: [PATCH] * 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 --- ChangeLog | 8 ++++++++ src/ejabberd.cfg.example | 2 +- src/ejabberd_sm.erl | 12 +++++++----- src/eldap/eldap.erl | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9f5e53537..d3fadd445 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-11-23 Alexey Shchepin + + * 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 + 2006-11-20 Mickael Remond * src/ejd2odbc.erl: Copy mod_private data from Mnesia to 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