summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2015-11-10 01:26:55 +0300
committerMichael Klishin <michael@clojurewerkz.org>2015-11-10 01:26:55 +0300
commit2d1061cd1e492fa3428a45b59924722c9be453f7 (patch)
tree04c8b769b192d4af60b347c86033e7ba58cf0023 /src
parent543201bf9d09e8d61639ed9b939a82ed43a1c943 (diff)
parente5af86f753f3307d919a17603fa1f77fc678cbad (diff)
downloadrabbitmq-server-git-2d1061cd1e492fa3428a45b59924722c9be453f7.tar.gz
Merge branch 'master' into rabbitmq-server-62
Conflicts: src/rabbit_cli.erl
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_access_control.erl8
-rw-r--r--src/rabbit_cli.erl36
-rw-r--r--src/rabbit_direct.erl4
3 files changed, 28 insertions, 20 deletions
diff --git a/src/rabbit_access_control.erl b/src/rabbit_access_control.erl
index 3fe7212276..f649e4b274 100644
--- a/src/rabbit_access_control.erl
+++ b/src/rabbit_access_control.erl
@@ -142,7 +142,7 @@ check_vhost_access(User = #user{username = Username,
auth_user(User, Impl), VHostPath, Sock)
end,
Mod, "access to vhost '~s' refused for user '~s'",
- [VHostPath, Username]);
+ [VHostPath, Username], not_allowed);
(_, Else) ->
Else
end, ok, Modules).
@@ -164,7 +164,11 @@ check_resource_access(User = #user{username = Username,
(_, Else) -> Else
end, ok, Modules).
+
check_access(Fun, Module, ErrStr, ErrArgs) ->
+ check_access(Fun, Module, ErrStr, ErrArgs, access_refused).
+
+check_access(Fun, Module, ErrStr, ErrArgs, ErrName) ->
Allow = case Fun() of
{error, E} ->
rabbit_log:error(ErrStr ++ " by ~s: ~p~n",
@@ -177,5 +181,5 @@ check_access(Fun, Module, ErrStr, ErrArgs) ->
true ->
ok;
false ->
- rabbit_misc:protocol_error(access_refused, ErrStr, ErrArgs)
+ rabbit_misc:protocol_error(ErrName, ErrStr, ErrArgs)
end.
diff --git a/src/rabbit_cli.erl b/src/rabbit_cli.erl
index 522e91120e..311906afc6 100644
--- a/src/rabbit_cli.erl
+++ b/src/rabbit_cli.erl
@@ -68,10 +68,10 @@ main(ParseFun, DoFun, UsageMod) ->
%% thrown errors into normal return values
case catch DoFun(Command, Node, Args, Opts) of
ok ->
- rabbit_misc:quit(0);
+ rabbit_misc:quit(?EX_OK);
{ok, Result} ->
rabbit_ctl_misc:print_cmd_result(Command, Result),
- rabbit_misc:quit(0);
+ rabbit_misc:quit(?EX_OK);
{'EXIT', {function_clause, [{?MODULE, action, _} | _]}} -> %% < R15
PrintInvalidCommandError(),
usage(UsageMod);
@@ -81,47 +81,48 @@ main(ParseFun, DoFun, UsageMod) ->
{error, {missing_dependencies, Missing, Blame}} ->
print_error("dependent plugins ~p not found; used by ~p.",
[Missing, Blame]),
- rabbit_misc:quit(2);
+ rabbit_misc:quit(?EX_CONFIG);
{'EXIT', {badarg, _}} ->
print_error("invalid parameter: ~p", [Args]),
- usage(UsageMod);
+ usage(UsageMod, ?EX_DATAERR);
{error, {Problem, Reason}} when is_atom(Problem), is_binary(Reason) ->
%% We handle this common case specially to avoid ~p since
%% that has i18n issues
print_error("~s: ~s", [Problem, Reason]),
- rabbit_misc:quit(2);
+ rabbit_misc:quit(?EX_SOFTWARE);
{error, Reason} ->
print_error("~p", [Reason]),
- rabbit_misc:quit(2);
+ rabbit_misc:quit(?EX_SOFTWARE);
{error_string, Reason} ->
print_error("~s", [Reason]),
- rabbit_misc:quit(2);
+ rabbit_misc:quit(?EX_SOFTWARE);
{badrpc, {'EXIT', Reason}} ->
print_error("~p", [Reason]),
- rabbit_misc:quit(2);
+ rabbit_misc:quit(?EX_SOFTWARE);
{badrpc, Reason} ->
case Reason of
timeout ->
- print_error("operation ~w on node ~w timed out", [Command, Node]);
+ print_error("operation ~w on node ~w timed out", [Command, Node]),
+ rabbit_misc:quit(?EX_TEMPFAIL);
_ ->
print_error("unable to connect to node ~w: ~w", [Node, Reason]),
- print_badrpc_diagnostics([Node])
- end,
- rabbit_misc:quit(2);
+ print_badrpc_diagnostics([Node]),
+ rabbit_misc:quit(?EX_UNAVAILABLE)
+ end;
{badrpc_multi, Reason, Nodes} ->
print_error("unable to connect to nodes ~p: ~w", [Nodes, Reason]),
print_badrpc_diagnostics(Nodes),
- rabbit_misc:quit(2);
+ rabbit_misc:quit(?EX_UNAVAILABLE);
function_clause ->
print_error("operation ~w used with invalid parameter: ~p",
[Command, Args]),
usage(UsageMod);
{refused, Username, _, _} ->
print_error("failed to authenticate user \"~s\"", [Username]),
- rabbit_misc:quit(2);
+ rabbit_misc:quit(?EX_NOUSER);
Other ->
print_error("~p", [Other]),
- rabbit_misc:quit(2)
+ rabbit_misc:quit(?EX_SOFTWARE)
end.
start_distribution() ->
@@ -139,8 +140,11 @@ name_type() ->
end.
usage(Mod) ->
+ usage(Mod, ?EX_USAGE).
+
+usage(Mod, ExitCode) ->
io:format("~s", [Mod:usage()]),
- rabbit_misc:quit(1).
+ rabbit_misc:quit(ExitCode).
%%----------------------------------------------------------------------------
diff --git a/src/rabbit_direct.erl b/src/rabbit_direct.erl
index 4940ab2b53..623d16215b 100644
--- a/src/rabbit_direct.erl
+++ b/src/rabbit_direct.erl
@@ -114,8 +114,8 @@ connect1(User, VHost, Protocol, Pid, Infos) ->
rabbit_event:notify(connection_created, Infos),
{ok, {User, rabbit_reader:server_properties(Protocol)}}
catch
- exit:#amqp_error{name = access_refused} ->
- {error, access_refused}
+ exit:#amqp_error{name = Reason = not_allowed} ->
+ {error, Reason}
end.
start_channel(Number, ClientChannelPid, ConnPid, ConnName, Protocol, User,