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 /src/cyrsasl.erl | |
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
Diffstat (limited to 'src/cyrsasl.erl')
-rw-r--r-- | src/cyrsasl.erl | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/src/cyrsasl.erl b/src/cyrsasl.erl index 4b040bee..f8e54882 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. |