diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-03-01 15:23:22 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-03-01 15:23:22 +0300 |
commit | 8e41bdc25e7c59c48298cefa9e1036fb1402df7a (patch) | |
tree | 89730091fe57552e9fd95d9ca093b448cd457f4f /src/xmpp_stream_out.erl | |
parent | Resolve 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.erl | 11 |
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. |