summaryrefslogtreecommitdiff
path: root/src/cyrsasl.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2006-04-27 21:24:30 +0000
committerAlexey Shchepin <alexey@process-one.net>2006-04-27 21:24:30 +0000
commit66149f862fa162878ad7643f201c7476df1c0e75 (patch)
tree271f2c430b32e5d9c7d4ddc603db9112930e47b1 /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.erl27
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.