Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2004-11-06 00:14:31 +0300
committerAlexey Shchepin <alexey@process-one.net>2004-11-06 00:14:31 +0300
commit2f7f3d9b001ee6276172d88525ec805e6bb6f52b (patch)
tree374bf023281e07a5acec65bbdb239acd3eb6ace0 /src
parent7d683b194fbbc5e3edf5e549e3d28bf41cf68b9e (diff)
* src/aclocal.m4: Fixed headers detecting in AM_WITH_OPENSSL
(thanks to Leif Johansson) * src/ejabberd_auth.erl: Added support for ldap_rootdn and ldap_password options (thanks to Stefan de Konink) * src/mod_vcard_ldap.erl: Likewise * src/ejabberd_router.erl: Now possible to route packet via function call instead of message sending * src/ejabberd_sm.erl: Added function route/3, use it in route table * src/ejabberd_local.erl: Likewise * src/ejabberd_s2s.erl: Likewise * (all): Fixed spelling of word "authentication" * src/*/Makefile.in: Replaced erlc with @ERLC@ SVN Revision: 285
Diffstat (limited to 'src')
-rw-r--r--src/aclocal.m48
-rw-r--r--src/ejabberd_auth.erl6
-rw-r--r--src/ejabberd_c2s.erl12
-rw-r--r--src/ejabberd_local.erl72
-rw-r--r--src/ejabberd_router.erl102
-rw-r--r--src/ejabberd_s2s.erl18
-rw-r--r--src/ejabberd_s2s_in.erl8
-rw-r--r--src/ejabberd_s2s_out.erl4
-rw-r--r--src/ejabberd_sm.erl17
-rw-r--r--src/eldap/Makefile.in4
-rw-r--r--src/mod_irc/Makefile.in2
-rw-r--r--src/mod_muc/Makefile.in2
-rw-r--r--src/mod_pubsub/Makefile.in2
-rw-r--r--src/mod_vcard_ldap.erl4
-rw-r--r--src/stringprep/Makefile.in2
-rw-r--r--src/tls/Makefile.in2
-rw-r--r--src/web/Makefile.in2
17 files changed, 164 insertions, 103 deletions
diff --git a/src/aclocal.m4 b/src/aclocal.m4
index 25cd63b91..13b54abe5 100644
--- a/src/aclocal.m4
+++ b/src/aclocal.m4
@@ -205,12 +205,16 @@ if test x"$tls" != x; then
SSL_LIBS="-L$ssl_prefix/lib -lcrypto"
AC_CHECK_LIB(ssl, SSL_new, [ have_openssl=yes ], [ have_openssl=no ], [ $SSL_LIBS $SSL_CFLAGS ])
if test x"$have_openssl" = xyes; then
- AC_CHECK_HEADERS($ssl_prefix/include/openssl/ssl.h, have_openssl_h=yes)
+ save_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="-I$ssl_prefix/lib $CPPFLAGS"
+ AC_CHECK_HEADERS(openssl/ssl.h, have_openssl_h=yes)
+ CPPFLAGS=$save_CPPFLAGS
if test x"$have_openssl_h" = xyes; then
have_openssl=yes
printf "openssl found in $ssl_prefix\n";
SSL_LIBS="-L$ssl_prefix/lib -lssl -lcrypto"
- SSL_CFLAGS="-I$ssl_prefix/include/openssl -DHAVE_SSL"
+ CPPFLAGS="-I$ssl_prefix/lib $CPPFLAGS"
+ SSL_CFLAGS="-DHAVE_SSL"
break
fi
fi
diff --git a/src/ejabberd_auth.erl b/src/ejabberd_auth.erl
index d078223e1..d7f6b3668 100644
--- a/src/ejabberd_auth.erl
+++ b/src/ejabberd_auth.erl
@@ -79,8 +79,10 @@ init([]) ->
ok;
ldap ->
LDAPServers = ejabberd_config:get_local_option(ldap_servers),
- eldap:start_link("ejabberd", LDAPServers, 389, "", ""),
- eldap:start_link("ejabberd_bind", LDAPServers, 389, "", "")
+ RootDN = ejabberd_config:get_local_option(ldap_rootdn),
+ Password = ejabberd_config:get_local_option(ldap_password),
+ eldap:start_link("ejabberd", LDAPServers, 389, RootDN, Password),
+ eldap:start_link("ejabberd_bind", LDAPServers, 389, RootDN, Password)
end,
{ok, #state{}}.
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 05177c97c..2084a05e7 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -292,7 +292,7 @@ wait_for_auth({xmlstreamelement, El}, StateData) ->
U, P, StateData#state.streamid, D) of
true ->
?INFO_MSG(
- "(~w) Accepted legacy authentification for ~s",
+ "(~w) Accepted legacy authentication for ~s",
[StateData#state.socket,
jlib:jid_to_string(JID)]),
ejabberd_sm:open_session(U, R),
@@ -319,7 +319,7 @@ wait_for_auth({xmlstreamelement, El}, StateData) ->
privacy_list = PrivList}};
_ ->
?INFO_MSG(
- "(~w) Failed legacy authentification for ~s",
+ "(~w) Failed legacy authentication for ~s",
[StateData#state.socket,
jlib:jid_to_string(JID)]),
Err = jlib:make_error_reply(
@@ -331,7 +331,7 @@ wait_for_auth({xmlstreamelement, El}, StateData) ->
if
JID == error ->
?INFO_MSG(
- "(~w) Forbidden legacy authentification for "
+ "(~w) Forbidden legacy authentication for "
"username '~s' with resource '~s'",
[StateData#state.socket, U, R]),
Err = jlib:make_error_reply(El, ?ERR_JID_MALFORMED),
@@ -339,7 +339,7 @@ wait_for_auth({xmlstreamelement, El}, StateData) ->
{next_state, wait_for_auth, StateData};
true ->
?INFO_MSG(
- "(~w) Forbidden legacy authentification for ~s",
+ "(~w) Forbidden legacy authentication for ~s",
[StateData#state.socket,
jlib:jid_to_string(JID)]),
Err = jlib:make_error_reply(El, ?ERR_NOT_ALLOWED),
@@ -393,7 +393,7 @@ wait_for_feature_request({xmlstreamelement, El}, StateData) ->
{xmlelement, "success",
[{"xmlns", ?NS_SASL}], []}),
U = xml:get_attr_s(username, Props),
- ?INFO_MSG("(~w) Accepted authentification for ~s",
+ ?INFO_MSG("(~w) Accepted authentication for ~s",
[StateData#state.socket, U]),
{next_state, wait_for_stream,
StateData#state{authentificated = true,
@@ -469,7 +469,7 @@ wait_for_sasl_response({xmlstreamelement, El}, StateData) ->
{xmlelement, "success",
[{"xmlns", ?NS_SASL}], []}),
U = xml:get_attr_s(username, Props),
- ?INFO_MSG("(~w) Accepted authentification for ~s",
+ ?INFO_MSG("(~w) Accepted authentication for ~s",
[StateData#state.socket, U]),
{next_state, wait_for_stream,
StateData#state{authentificated = true,
diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl
index 5da4cfaa1..40b598e02 100644
--- a/src/ejabberd_local.erl
+++ b/src/ejabberd_local.erl
@@ -1,7 +1,7 @@
%%%----------------------------------------------------------------------
%%% File : ejabberd_local.erl
%%% Author : Alexey Shchepin <alexey@sevcom.net>
-%%% Purpose :
+%%% Purpose : Route local packets
%%% Created : 30 Nov 2002 by Alexey Shchepin <alexey@sevcom.net>
%%% Id : $Id$
%%%----------------------------------------------------------------------
@@ -12,7 +12,8 @@
-export([start_link/0, init/0]).
--export([register_iq_handler/3,
+-export([route/3,
+ register_iq_handler/3,
register_iq_handler/4,
unregister_iq_handler/1,
refresh_iq_handlers/0,
@@ -22,7 +23,7 @@
-include("ejabberd.hrl").
-include("jlib.hrl").
--record(state, {mydomain, iqtable}).
+-define(IQTABLE, local_iqtable).
start_link() ->
register(ejabberd_local,
@@ -30,43 +31,41 @@ start_link() ->
{ok, Pid}.
init() ->
- MyDomain = ?MYNAME,
- ejabberd_router:register_route(MyDomain),
- catch ets:new(local_iqtable, [named_table, public]),
+ ejabberd_router:register_route(?MYNAME, {apply, ?MODULE, route}),
+ catch ets:new(?IQTABLE, [named_table, public]),
ejabberd_hooks:add(local_send_to_resource_hook,
?MODULE, bounce_resource_packet, 100),
- loop(#state{mydomain = MyDomain,
- iqtable = local_iqtable}).
+ loop().
-loop(State) ->
+loop() ->
receive
{route, From, To, Packet} ->
- case catch do_route(State, From, To, Packet) of
+ case catch do_route(From, To, Packet) of
{'EXIT', Reason} ->
?ERROR_MSG("~p~nwhen processing: ~p",
[Reason, {From, To, Packet}]);
_ ->
ok
end,
- loop(State);
+ loop();
{register_iq_handler, XMLNS, Module, Function} ->
- ets:insert(State#state.iqtable, {XMLNS, Module, Function}),
+ ets:insert(?IQTABLE, {XMLNS, Module, Function}),
catch mod_disco:register_feature(XMLNS),
- loop(State);
+ loop();
{register_iq_handler, XMLNS, Module, Function, Opts} ->
- ets:insert(State#state.iqtable, {XMLNS, Module, Function, Opts}),
+ ets:insert(?IQTABLE, {XMLNS, Module, Function, Opts}),
catch mod_disco:register_feature(XMLNS),
- loop(State);
+ loop();
{unregister_iq_handler, XMLNS} ->
- case ets:lookup(State#state.iqtable, XMLNS) of
+ case ets:lookup(?IQTABLE, XMLNS) of
[{_, Module, Function, Opts}] ->
gen_iq_handler:stop_iq_handler(Module, Function, Opts);
_ ->
ok
end,
- ets:delete(State#state.iqtable, XMLNS),
+ ets:delete(?IQTABLE, XMLNS),
catch mod_disco:unregister_feature(XMLNS),
- loop(State);
+ loop();
refresh_iq_handlers ->
lists:foreach(
fun(T) ->
@@ -78,22 +77,24 @@ loop(State) ->
_ ->
ok
end
- end, ets:tab2list(State#state.iqtable)),
- loop(State);
+ end, ets:tab2list(?IQTABLE)),
+ loop();
_ ->
- loop(State)
+ loop()
end.
-do_route(State, From, To, Packet) ->
+do_route(From, To, Packet) ->
?DEBUG("local route~n\tfrom ~p~n\tto ~p~n\tpacket ~P~n",
[From, To, Packet, 8]),
- case To of
- #jid{luser = "", lresource = ""} ->
+ if
+ To#jid.luser /= "" ->
+ ejabberd_sm:route(From, To, Packet);
+ To#jid.lresource == "" ->
{xmlelement, Name, Attrs, _Els} = Packet,
case Name of
"iq" ->
- process_iq(State, From, To, Packet);
+ process_iq(From, To, Packet);
"message" ->
ok;
"presence" ->
@@ -101,7 +102,7 @@ do_route(State, From, To, Packet) ->
_ ->
ok
end;
- #jid{luser = "", lresource = Res} ->
+ true ->
{xmlelement, Name, Attrs, _Els} = Packet,
case xml:get_attr_s("type", Attrs) of
"error" -> ok;
@@ -109,16 +110,14 @@ do_route(State, From, To, Packet) ->
_ ->
ejabberd_hooks:run(local_send_to_resource_hook,
[From, To, Packet])
- end;
- _ ->
- ejabberd_sm ! {route, From, To, Packet}
- end.
+ end
+ end.
-process_iq(State, From, To, Packet) ->
+process_iq(From, To, Packet) ->
IQ = jlib:iq_query_info(Packet),
case IQ of
#iq{xmlns = XMLNS} ->
- case ets:lookup(State#state.iqtable, XMLNS) of
+ case ets:lookup(?IQTABLE, XMLNS) of
[{_, Module, Function}] ->
ResIQ = Module:Function(From, To, IQ),
if
@@ -144,6 +143,15 @@ process_iq(State, From, To, Packet) ->
ok
end.
+route(From, To, Packet) ->
+ case catch do_route(From, To, Packet) of
+ {'EXIT', Reason} ->
+ ?ERROR_MSG("~p~nwhen processing: ~p",
+ [Reason, {From, To, Packet}]);
+ _ ->
+ ok
+ end.
+
register_iq_handler(XMLNS, Module, Fun) ->
ejabberd_local ! {register_iq_handler, XMLNS, Module, Fun}.
diff --git a/src/ejabberd_router.erl b/src/ejabberd_router.erl
index 700724eab..5713d1a33 100644
--- a/src/ejabberd_router.erl
+++ b/src/ejabberd_router.erl
@@ -12,6 +12,7 @@
-export([route/3,
register_route/1,
+ register_route/2,
unregister_route/1,
dirty_get_all_routes/0,
dirty_get_all_domains/0
@@ -22,15 +23,10 @@
-include("ejabberd.hrl").
-include("jlib.hrl").
--record(route, {domain, pid}).
+-record(route, {domain, pid, local_hint}).
start_link() ->
- Pid = proc_lib:spawn_link(ejabberd_router, init, []),
- register(ejabberd_router, Pid),
- {ok, Pid}.
-
-init() ->
update_tables(),
mnesia:create_table(route,
[{ram_copies, [node()]},
@@ -38,6 +34,11 @@ init() ->
{attributes,
record_info(fields, route)}]),
mnesia:add_table_copy(route, node(), ram_copies),
+ Pid = proc_lib:spawn_link(ejabberd_router, init, []),
+ register(ejabberd_router, Pid),
+ {ok, Pid}.
+
+init() ->
mnesia:subscribe({table, route, simple}),
loop().
@@ -52,20 +53,6 @@ loop() ->
ok
end,
loop();
- {register_route, Domain, Pid} ->
- F = fun() ->
- mnesia:write(#route{domain = Domain,
- pid = Pid})
- end,
- mnesia:transaction(F),
- loop();
- {unregister_route, Domain, Pid} ->
- F = fun() ->
- mnesia:delete_object(#route{domain = Domain,
- pid = Pid})
- end,
- mnesia:transaction(F),
- loop();
{mnesia_table_event, {write, #route{pid = Pid}, _ActivityId}} ->
erlang:monitor(process, Pid),
loop();
@@ -91,31 +78,76 @@ do_route(From, To, Packet) ->
LDstDomain = To#jid.lserver,
case mnesia:dirty_read(route, LDstDomain) of
[] ->
- ejabberd_s2s ! {route, From, To, Packet};
+ ejabberd_s2s:route(From, To, Packet);
[R] ->
Pid = R#route.pid,
- ?DEBUG("routed to process ~p~n", [Pid]),
- Pid ! {route, From, To, Packet};
+ if
+ node(Pid) == node() ->
+ case R#route.local_hint of
+ {apply, Module, Function} ->
+ Module:Function(From, To, Packet);
+ _ ->
+ Pid ! {route, From, To, Packet}
+ end;
+ true ->
+ Pid ! {route, From, To, Packet}
+ end;
Rs ->
- Rs1 = case [R || R <- Rs, node(R#route.pid) == node()] of
- [] -> Rs;
- LRs -> LRs
- end,
- R = lists:nth(erlang:phash(now(), length(Rs1)), Rs1),
- Pid = R#route.pid,
- ?DEBUG("routed to process ~p~n", [Pid]),
- Pid ! {route, From, To, Packet}
+ case [R || R <- Rs, node(R#route.pid) == node()] of
+ [] ->
+ R = lists:nth(erlang:phash(now(), length(Rs)), Rs),
+ Pid = R#route.pid,
+ Pid ! {route, From, To, Packet};
+ LRs ->
+ LRs,
+ R = lists:nth(erlang:phash(now(), length(LRs)), LRs),
+ Pid = R#route.pid,
+ case R#route.local_hint of
+ {apply, Module, Function} ->
+ Module:Function(From, To, Packet);
+ _ ->
+ Pid ! {route, From, To, Packet}
+ end
+ end
end.
+%route(From, To, Packet) ->
+% ejabberd_router ! {route, From, To, Packet}.
+
route(From, To, Packet) ->
- ejabberd_router ! {route, From, To, Packet}.
+ case catch do_route(From, To, Packet) of
+ {'EXIT', Reason} ->
+ ?ERROR_MSG("~p~nwhen processing: ~p",
+ [Reason, {From, To, Packet}]);
+ _ ->
+ ok
+ end.
register_route(Domain) ->
- ejabberd_router ! {register_route, Domain, self()}.
+ Pid = self(),
+ F = fun() ->
+ mnesia:write(#route{domain = Domain,
+ pid = Pid})
+ end,
+ mnesia:transaction(F).
+
+register_route(Domain, LocalHint) ->
+ Pid = self(),
+ F = fun() ->
+ mnesia:write(#route{domain = Domain,
+ pid = Pid,
+ local_hint = LocalHint})
+ end,
+ mnesia:transaction(F).
unregister_route(Domain) ->
- ejabberd_router ! {unregister_route, Domain, self()}.
+ Pid = self(),
+ F = fun() ->
+ mnesia:delete_object(#route{domain = Domain,
+ pid = Pid})
+ end,
+ mnesia:transaction(F).
dirty_get_all_routes() ->
@@ -131,6 +163,8 @@ update_tables() ->
[domain, node, pid] ->
mnesia:delete_table(route);
[domain, pid] ->
+ mnesia:delete_table(route);
+ [domain, pid, local_hint] ->
ok;
{'EXIT', _} ->
ok
diff --git a/src/ejabberd_s2s.erl b/src/ejabberd_s2s.erl
index 18a86e6c2..53dc89b9f 100644
--- a/src/ejabberd_s2s.erl
+++ b/src/ejabberd_s2s.erl
@@ -11,9 +11,11 @@
-vsn('$Revision$ ').
-export([start_link/0, init/0,
+ route/3,
have_connection/1,
get_key/1,
try_register/1,
+ remove_connection/1,
dirty_get_connections/0]).
-include("ejabberd.hrl").
@@ -29,17 +31,14 @@ start_link() ->
init() ->
update_tables(),
- mnesia:create_table(s2s,[{ram_copies, [node()]},
- {attributes, record_info(fields, s2s)}]),
+ mnesia:create_table(s2s, [{ram_copies, [node()]},
+ {attributes, record_info(fields, s2s)}]),
mnesia:add_table_copy(s2s, node(), ram_copies),
mnesia:subscribe(system),
loop().
loop() ->
receive
- {closed_conection, FromTo} ->
- remove_connection(FromTo),
- loop();
{mnesia_system_event, {mnesia_down, Node}} ->
clean_table_from_bad_node(Node),
loop();
@@ -57,6 +56,15 @@ loop() ->
end.
+route(From, To, Packet) ->
+ case catch do_route(From, To, Packet) of
+ {'EXIT', Reason} ->
+ ?ERROR_MSG("~p~nwhen processing: ~p",
+ [Reason, {From, To, Packet}]);
+ _ ->
+ ok
+ end.
+
remove_connection(FromTo) ->
F = fun() ->
diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl
index 4da98478e..5373123f1 100644
--- a/src/ejabberd_s2s_in.erl
+++ b/src/ejabberd_s2s_in.erl
@@ -311,14 +311,6 @@ handle_info(_, StateName, StateData) ->
%% Returns: any
%%----------------------------------------------------------------------
terminate(Reason, _StateName, StateData) ->
-% case StateData#state.user of
-% "" ->
-% ok;
-% _ ->
-% %ejabberd_sm:close_session(StateData#state.user,
-% % StateData#state.resource)
-% end,
- %ejabberd_s2s ! {closed_conection, StateData#state.server},
?INFO_MSG("terminated: ~p", [Reason]),
gen_tcp:close(StateData#state.socket),
ok.
diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl
index 4da88b0cd..aec98ba6e 100644
--- a/src/ejabberd_s2s_out.erl
+++ b/src/ejabberd_s2s_out.erl
@@ -397,8 +397,8 @@ terminate(Reason, StateName, StateData) ->
false ->
ok;
Key ->
- ejabberd_s2s ! {closed_conection, {StateData#state.myname,
- StateData#state.server}}
+ ejabberd_s2s:remove_connection({StateData#state.myname,
+ StateData#state.server})
end,
case StateData#state.socket of
undefined ->
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl
index bb8fb4951..ef0fa1e1c 100644
--- a/src/ejabberd_sm.erl
+++ b/src/ejabberd_sm.erl
@@ -10,7 +10,9 @@
-author('alexey@sevcom.net').
-vsn('$Revision$ ').
--export([start_link/0, init/0, open_session/2, close_session/2,
+-export([start_link/0, init/0,
+ route/3,
+ open_session/2, close_session/2,
bounce_offline_message/3,
get_user_resources/1,
set_presence/3,
@@ -89,11 +91,20 @@ loop() ->
end.
+route(From, To, Packet) ->
+ case catch do_route(From, To, Packet) of
+ {'EXIT', Reason} ->
+ ?ERROR_MSG("~p~nwhen processing: ~p",
+ [Reason, {From, To, Packet}]);
+ _ ->
+ ok
+ end.
+
open_session(User, Resource) ->
- ejabberd_sm ! {open_session, User, Resource, self()}.
+ register_connection(User, Resource, self()).
close_session(User, Resource) ->
- ejabberd_sm ! {close_session, User, Resource}.
+ remove_connection(User, Resource).
register_connection(User, Resource, Pid) ->
diff --git a/src/eldap/Makefile.in b/src/eldap/Makefile.in
index 5ce2a4d9f..91384b328 100644
--- a/src/eldap/Makefile.in
+++ b/src/eldap/Makefile.in
@@ -17,10 +17,10 @@ OBJS = \
all: $(OBJS)
ELDAPv3.erl: ELDAPv3.asn
- erlc -bber_bin -W $(EFLAGS) $<
+ @ERLC@ -bber_bin -W $(EFLAGS) $<
$(OUTDIR)/%.beam: %.erl ELDAPv3.erl
- erlc -W $(EFLAGS) -o $(OUTDIR) $<
+ @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $<
clean:
diff --git a/src/mod_irc/Makefile.in b/src/mod_irc/Makefile.in
index d8c1c74af..0a7cd5677 100644
--- a/src/mod_irc/Makefile.in
+++ b/src/mod_irc/Makefile.in
@@ -20,7 +20,7 @@ OBJS = \
all: $(OBJS) $(ERLSHLIBS)
$(OUTDIR)/%.beam: %.erl
- erlc -W $(EFLAGS) -o $(OUTDIR) $<
+ @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $<
#all: $(ERLSHLIBS)
# erl -s make all report "{outdir, \"..\"}" -noinput -s erlang halt
diff --git a/src/mod_muc/Makefile.in b/src/mod_muc/Makefile.in
index 7e4bd53fc..14e9a9763 100644
--- a/src/mod_muc/Makefile.in
+++ b/src/mod_muc/Makefile.in
@@ -17,7 +17,7 @@ OBJS = \
all: $(OBJS)
$(OUTDIR)/%.beam: %.erl
- erlc -W $(EFLAGS) -o $(OUTDIR) $<
+ @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $<
clean:
rm -f $(OBJS)
diff --git a/src/mod_pubsub/Makefile.in b/src/mod_pubsub/Makefile.in
index 096d8bbb1..e007294e0 100644
--- a/src/mod_pubsub/Makefile.in
+++ b/src/mod_pubsub/Makefile.in
@@ -16,7 +16,7 @@ OBJS = \
all: $(OBJS)
$(OUTDIR)/%.beam: %.erl
- erlc -W $(EFLAGS) -o $(OUTDIR) $<
+ @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $<
clean:
rm -f $(OBJS)
diff --git a/src/mod_vcard_ldap.erl b/src/mod_vcard_ldap.erl
index 75c8a298d..5be8cf0f9 100644
--- a/src/mod_vcard_ldap.erl
+++ b/src/mod_vcard_ldap.erl
@@ -29,7 +29,9 @@ start(Opts) ->
gen_iq_handler:add_iq_handler(ejabberd_sm, ?NS_VCARD,
?MODULE, process_sm_iq, IQDisc),
LDAPServers = ejabberd_config:get_local_option(ldap_servers),
- eldap:start_link("mod_vcard_ldap", LDAPServers, 389, "", ""),
+ RootDN = ejabberd_config:get_local_option(ldap_rootdn),
+ Password = ejabberd_config:get_local_option(ldap_password),
+ eldap:start_link("mod_vcard_ldap", LDAPServers, 389, RootDN, Password),
Host = gen_mod:get_opt(host, Opts, "vjud." ++ ?MYNAME),
Search = gen_mod:get_opt(search, Opts, true),
register(ejabberd_mod_vcard_ldap, spawn(?MODULE, init, [Host, Search])).
diff --git a/src/stringprep/Makefile.in b/src/stringprep/Makefile.in
index cd1ddbbaf..7717878a1 100644
--- a/src/stringprep/Makefile.in
+++ b/src/stringprep/Makefile.in
@@ -18,7 +18,7 @@ OBJS = \
all: $(OBJS) $(ERLSHLIBS)
$(OUTDIR)/%.beam: %.erl
- erlc -W $(EFLAGS) -o $(OUTDIR) $<
+ @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $<
#all: $(ERLSHLIBS)
# erl -s make all report "{outdir, \"..\"}" -noinput -s erlang halt
diff --git a/src/tls/Makefile.in b/src/tls/Makefile.in
index 0e5f7c038..e0ebd5d4f 100644
--- a/src/tls/Makefile.in
+++ b/src/tls/Makefile.in
@@ -18,7 +18,7 @@ OBJS = \
all: $(OBJS) $(ERLSHLIBS)
$(OUTDIR)/%.beam: %.erl
- erlc -W $(EFLAGS) -o $(OUTDIR) $<
+ @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $<
#all: $(ERLSHLIBS)
# erl -s make all report "{outdir, \"..\"}" -noinput -s erlang halt
diff --git a/src/web/Makefile.in b/src/web/Makefile.in
index 10949d9c2..37d4ce806 100644
--- a/src/web/Makefile.in
+++ b/src/web/Makefile.in
@@ -20,7 +20,7 @@ OBJS = \
all: $(OBJS)
$(OUTDIR)/%.beam: %.erl
- erlc -W $(EFLAGS) -o $(OUTDIR) $<
+ @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $<
clean: