diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2019-03-14 14:06:14 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2019-03-14 14:06:14 +0300 |
| commit | dca81782e82189c992afecb99035d3797756147c (patch) | |
| tree | 3f536c174a265a8bdbc1085530078fc5baed24ed | |
| parent | 5e97011b9869a0ff579290df6e3bf8ab315b5c6e (diff) | |
| download | rabbitmq-server-git-dca81782e82189c992afecb99035d3797756147c.tar.gz | |
rabbit_auth_mechanism_amqplain: refactor, improve error message
| -rw-r--r-- | src/rabbit_auth_mechanism_amqplain.erl | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/src/rabbit_auth_mechanism_amqplain.erl b/src/rabbit_auth_mechanism_amqplain.erl index fa3d9f41b0..a2b610eaa3 100644 --- a/src/rabbit_auth_mechanism_amqplain.erl +++ b/src/rabbit_auth_mechanism_amqplain.erl @@ -45,18 +45,15 @@ handle_response(Response, _State) -> LoginTable = rabbit_binary_parser:parse_table(Response), case {lists:keysearch(<<"LOGIN">>, 1, LoginTable), lists:keysearch(<<"PASSWORD">>, 1, LoginTable)} of - {{value, {_, longstr, User}}, - {value, {_, longstr, Pass}}} -> - rabbit_access_control:check_user_pass_login(User, Pass); - {{value, {_, longstr, User}}, - {value, {_, shortstr, Pass}}} -> - rabbit_access_control:check_user_pass_login(User, Pass); - {{value, {_, shortstr, User}}, - {value, {_, longstr, Pass}}} -> - rabbit_access_control:check_user_pass_login(User, Pass); - {{value, {_, shortstr, User}}, - {value, {_, shortstr, Pass}}} -> + {{value, {_, UserType, User}}, + {value, {_, PassType, Pass}}} when UserType =:= longstr orelse UserType =:= shortstr; + PassType =:= longstr orelse PassType =:= shortstr -> rabbit_access_control:check_user_pass_login(User, Pass); + {{value, {_, _UserType, _User}}, + {value, {_, _PassType, _Pass}}} -> + {protocol_error, + "AMQPLAIN auth info ~w uses unsupported type for LOGIN or PASSWORD field", + [LoginTable]}; _ -> {protocol_error, "AMQPLAIN auth info ~w is missing LOGIN or PASSWORD field", |
