From 66149f862fa162878ad7643f201c7476df1c0e75 Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Thu, 27 Apr 2006 21:24:30 +0000 Subject: * src/cyrsasl.erl: Bugfix: anonymous authentication was always enabled SVN Revision: 555 --- src/cyrsasl.erl | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/cyrsasl.erl b/src/cyrsasl.erl index 4b040bee2..f8e548826 100644 --- a/src/cyrsasl.erl +++ b/src/cyrsasl.erl @@ -104,16 +104,21 @@ server_new(Service, ServerFQDN, UserRealm, SecFlags, check_password = CheckPassword}. server_start(State, Mech, ClientIn) -> - case ets:lookup(sasl_mechanism, Mech) of - [#sasl_mechanism{module = Module}] -> - {ok, MechState} = Module:mech_new( - State#sasl_state.myname, - State#sasl_state.get_password, - State#sasl_state.check_password), - server_step(State#sasl_state{mech_mod = Module, - mech_state = MechState}, - ClientIn); - _ -> + case lists:member(Mech, listmech(State#sasl_state.myname)) of + true -> + case ets:lookup(sasl_mechanism, Mech) of + [#sasl_mechanism{module = Module}] -> + {ok, MechState} = Module:mech_new( + State#sasl_state.myname, + State#sasl_state.get_password, + State#sasl_state.check_password), + server_step(State#sasl_state{mech_mod = Module, + mech_state = MechState}, + ClientIn); + _ -> + {error, "no-mechanism"} + end; + false -> {error, "no-mechanism"} end. @@ -140,5 +145,5 @@ server_step(State, ClientIn) -> filter_anonymous(Host, Mechs) -> case ejabberd_auth_anonymous:is_sasl_anonymous_enabled(Host) of true -> Mechs; - false -> Mechs -- "ANONYMOUS" + false -> Mechs -- ["ANONYMOUS"] end. -- cgit v1.2.3