summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2019-03-14 14:06:14 +0300
committerMichael Klishin <michael@clojurewerkz.org>2019-03-14 14:06:14 +0300
commitdca81782e82189c992afecb99035d3797756147c (patch)
tree3f536c174a265a8bdbc1085530078fc5baed24ed /src
parent5e97011b9869a0ff579290df6e3bf8ab315b5c6e (diff)
downloadrabbitmq-server-git-dca81782e82189c992afecb99035d3797756147c.tar.gz
rabbit_auth_mechanism_amqplain: refactor, improve error message
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_auth_mechanism_amqplain.erl19
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",