diff --git a/ChangeLog b/ChangeLog index bf410d4f1..a2193d04a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-04-08 Badlop + + * src/ejabberd_auth_ldap.erl: LDAP function to get the number of + registered users is too slow (EJAB-331): set timeout in LDAP + search queries (thanks to Evgeniy Khramtsov) and return the number + of registered users. + 2008-04-07 Mickael Remond * doc/guide.tex: Documented the IQ discipline {queue, N}. diff --git a/src/ejabberd_auth_ldap.erl b/src/ejabberd_auth_ldap.erl index fcb5b985f..e22be1bc9 100644 --- a/src/ejabberd_auth_ldap.erl +++ b/src/ejabberd_auth_ldap.erl @@ -86,6 +86,10 @@ handle_info(_Info, State) -> {noreply, State}. %% ----- + +-define(LDAP_SEARCH_TIMEOUT, 5). % Timeout for LDAP search queries in seconds + + %%%---------------------------------------------------------------------- %%% API %%%---------------------------------------------------------------------- @@ -172,8 +176,8 @@ get_vh_registered_users(Server) -> Result -> Result end. -get_vh_registered_users_number(_Server) -> - 0. +get_vh_registered_users_number(Server) -> + length(get_vh_registered_users(Server)). get_password(_User, _Server) -> false. @@ -220,6 +224,7 @@ get_vh_registered_users_ldap(Server) -> {ok, EldapFilter} -> case eldap_pool:search(Eldap_ID, [{base, State#state.base}, {filter, EldapFilter}, + {timeout, ?LDAP_SEARCH_TIMEOUT}, {attributes, SortedDNAttrs}]) of #eldap_search_result{entries = Entries} -> lists:flatmap(