summaryrefslogtreecommitdiff
path: root/src/xmpp_stream_out.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-03-01 15:23:22 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-03-01 15:23:22 +0300
commit8e41bdc25e7c59c48298cefa9e1036fb1402df7a (patch)
tree89730091fe57552e9fd95d9ca093b448cd457f4f /src/xmpp_stream_out.erl
parentResolve all addresses from SRV lookup (diff)
Improve reporting of unavailable SASL mechanisms
Diffstat (limited to 'src/xmpp_stream_out.erl')
-rw-r--r--src/xmpp_stream_out.erl11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/xmpp_stream_out.erl b/src/xmpp_stream_out.erl
index d84dadf8..ecfe1414 100644
--- a/src/xmpp_stream_out.erl
+++ b/src/xmpp_stream_out.erl
@@ -534,8 +534,7 @@ process_features(#stream_features{sub_els = Els} = StreamFeatures,
process_sasl_mechanisms(Mechs, State2);
false ->
process_sasl_failure(
- #sasl_failure{reason = 'invalid-mechanism'},
- State2)
+ <<"Peer provided no SASL mechanisms">>, State2)
end
end
end
@@ -564,7 +563,7 @@ process_sasl_mechanisms(Mechs, #{user := User, server := Server} = State) ->
send_pkt(State1, #sasl_auth{mechanism = Mech, text = Authzid});
false ->
process_sasl_failure(
- #sasl_failure{reason = 'invalid-mechanism'}, State)
+ <<"Peer doesn't support EXTERNAL authentication">>, State)
end.
-spec process_starttls(state()) -> state().
@@ -638,10 +637,12 @@ process_sasl_success(#{mod := Mod,
end
end.
--spec process_sasl_failure(sasl_failure(), state()) -> state().
-process_sasl_failure(#sasl_failure{} = Failure, #{mod := Mod} = State) ->
+-spec process_sasl_failure(sasl_failure() | binary(), state()) -> state().
+process_sasl_failure(#sasl_failure{} = Failure, State) ->
Reason = format("Peer responded with error: ~s",
[format_sasl_failure(Failure)]),
+ process_sasl_failure(Reason, State);
+process_sasl_failure(Reason, #{mod := Mod} = State) ->
try Mod:handle_auth_failure(<<"EXTERNAL">>, {auth, Reason}, State)
catch _:undef -> process_stream_end({auth, Reason}, State)
end.