]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_auth.erl: Fixed broken multiple connection with
authorMickaël Rémond <mickael.remond@process-one.net>
Tue, 13 Jun 2006 16:52:38 +0000 (16:52 +0000)
committerMickaël Rémond <mickael.remond@process-one.net>
Tue, 13 Jun 2006 16:52:38 +0000 (16:52 +0000)
anonymous login problem (EJAB-107).
* src/ejabberd_auth_anonymous.erl: Likewise.

SVN Revision: 579

ChangeLog
src/ejabberd_auth.erl
src/ejabberd_auth_anonymous.erl

index 1ec39abcf3ae265490953a39397c7130f1ad2705..3f7ae232614cb4b22a9ee1a28a9b0e9d8a16208d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-06-13  Mickael Remond  <mickael.remond@process-one.net>
+
+       * src/ejabberd_auth.erl: Fixed broken multiple connection with
+       anonymous login problem.
+       * src/ejabberd_auth_anonymous.erl: Likewise.
+
 2006-06-07  Mickael Remond  <mickael.remond@process-one.net>
 
        * src/mod_pubsub/mod_pubsub.erl: Support for pubsub node creation
index f2c3f4b5093b03501d47c2abf96af06e2b91499c..e3839c491c5cf0b808f3665c9cf190fabedb1706 100644 (file)
@@ -25,6 +25,7 @@
         get_password/2,
         get_password_s/2,
         is_user_exists/2,
+         is_user_exists_in_other_modules/3,
         remove_user/2,
         remove_user/3,
         plain_password_required/1,
@@ -130,6 +131,14 @@ is_user_exists(User, Server) ->
              M:is_user_exists(User, Server)
       end, auth_modules(Server)).
 
+%% Check if the user exists in all authentications module except the module
+%% passed as parameter
+is_user_exists_in_other_modules(Module, User, Server) ->
+    lists:any(
+      fun(M) ->
+             M:is_user_exists(User, Server)
+      end, auth_modules(Server)--[Module]).
+
 remove_user(User, Server) ->
     lists:foreach(
       fun(M) ->
index e63c664884570e8b760e624f72a4b62a03a22342..5090a353cf33a0a4fab14c8955e12c64dccceef8 100644 (file)
@@ -149,7 +149,8 @@ check_password(User, Server, Password) ->
 check_password(User, Server, _Password, _StreamID, _Digest) ->
     %% We refuse login for registered accounts (They cannot logged but
     %% they however are "reserved")
-    case ejabberd_auth:is_user_exists(User, Server) of
+    case ejabberd_auth:is_user_exists_in_other_modules(?MODULE, 
+                                                      User, Server) of
        true  -> false;
        false -> login(User, Server)
     end.