]> granicus.if.org Git - ejabberd/commitdiff
* src/eldap/eldap.erl: Bugfix (thanks to Evgeniy Khramtsov)
authorAlexey Shchepin <alexey@process-one.net>
Thu, 23 Nov 2006 06:34:05 +0000 (06:34 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Thu, 23 Nov 2006 06:34:05 +0000 (06:34 +0000)
* src/ejabberd_sm.erl: The max_user_sessions option is now
configured via access rule
* src/ejabberd.cfg.example: Likewise

SVN Revision: 680

ChangeLog
src/ejabberd.cfg.example
src/ejabberd_sm.erl
src/eldap/eldap.erl

index 9f5e53537d10f960beb79cf2ad09d82aa2c09fb4..d3fadd445bef1712363057e4d1198dfd2c811b97 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-11-23  Alexey Shchepin  <alexey@sevcom.net>
+
+       * 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  <mickael.remond@process-one.net>
 
        * src/ejd2odbc.erl: Copy mod_private data from Mnesia to
index 56ebe5ea05318233428b85bb1febc0c8f1026d45..64ac4353a0863c83f1e905d2966103923a5babee 100644 (file)
 {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
index 7f4d6b87a4354a25aea64109bbda9f42f0353050..c320b4befd16293963204cdd09e28d5788e4ec44 100644 (file)
@@ -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.
 
 
index 894982e82bea5290f91c999b30d38ed0424476a2..1bf64b2b45d0af70dc31472786c47d3f1157e8bf 100644 (file)
@@ -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