diff options
author | Alexey Shchepin <alexey@process-one.net> | 2006-04-27 21:24:30 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2006-04-27 21:24:30 +0000 |
commit | 66149f862fa162878ad7643f201c7476df1c0e75 (patch) | |
tree | 271f2c430b32e5d9c7d4ddc603db9112930e47b1 | |
parent | * src/ejabberd_ctl.erl: The status now only returns "started" if (diff) |
* src/cyrsasl.erl: Bugfix: anonymous authentication was always
enabled
SVN Revision: 555
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/cyrsasl.erl | 27 |
2 files changed, 21 insertions, 11 deletions
@@ -1,3 +1,8 @@ +2006-04-28 Alexey Shchepin <alexey@sevcom.net> + + * src/cyrsasl.erl: Bugfix: anonymous authentication was always + enabled + 2006-04-27 Mickael Remond <mickael.remond@process-one.net> * src/ejabberd_ctl.erl: The status now only returns "started" if 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. |