]> granicus.if.org Git - ejabberd/commitdiff
Fix read of global ldap_servers option (EJAB-1309)
authorBadlop <badlop@process-one.net>
Wed, 6 Jul 2011 18:49:32 +0000 (20:49 +0200)
committerBadlop <badlop@process-one.net>
Wed, 6 Jul 2011 18:49:32 +0000 (20:49 +0200)
src/ejabberd_auth_ldap.erl

index 8a0d333dc8239aa00bc676d88540509fa9cd47e0..5afa67859b1fd74530eae69da984a664a1f15249 100644 (file)
@@ -99,25 +99,31 @@ handle_info(_Info, State) ->
 
 start(Host) ->
     ?DEBUG("Starting ~p for ~p.", [?MODULE, Host]),
-    case ejabberd_config:get_host_option(Host, ldap_servers) of
-       undefined -> check_bad_config(Host);
-       {host, _Host} -> ok;
-       _ ->
-           Proc = gen_mod:get_module_proc(Host, ?MODULE),
+    Option = case ejabberd_config:get_host_option(Host, ldap_servers) of
+                undefined -> check_local_config(Host);
+                {host, _Host} -> nothing;
+                _ ->
+                    {start, Host}
+            end,
+    case Option of
+       nothing -> ok;
+       {start, Host2} ->
+           Proc = gen_mod:get_module_proc(Host2, ?MODULE),
            ChildSpec = {
-               Proc, {?MODULE, start_link, [Host]},
-               transient, 1000, worker, [?MODULE]
-           },
+             Proc, {?MODULE, start_link, [Host2]},
+             transient, 1000, worker, [?MODULE]
+            },
            supervisor:start_child(ejabberd_sup, ChildSpec)
     end.
 
-check_bad_config(Host) ->
+check_local_config(Host) ->
     case ejabberd_config:get_local_option({ldap_servers, Host}) of
        undefined ->
-           ?ERROR_MSG("Can't start ~p for host ~p: missing ldap_servers configuration",
-                      [?MODULE, Host]),
+           ?ERROR_MSG("Can't start ~p for host ~p: missing ldap_servers "
+                      "configuration", [?MODULE, Host]),
            {error, bad_config};
-       _ -> ok
+       X when is_list(X)->
+           {start, Host}
     end.
 
 %% @spec (Host) -> term()