diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2015-11-10 01:26:55 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2015-11-10 01:26:55 +0300 |
| commit | 2d1061cd1e492fa3428a45b59924722c9be453f7 (patch) | |
| tree | 04c8b769b192d4af60b347c86033e7ba58cf0023 /src | |
| parent | 543201bf9d09e8d61639ed9b939a82ed43a1c943 (diff) | |
| parent | e5af86f753f3307d919a17603fa1f77fc678cbad (diff) | |
| download | rabbitmq-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.erl | 8 | ||||
| -rw-r--r-- | src/rabbit_cli.erl | 36 | ||||
| -rw-r--r-- | src/rabbit_direct.erl | 4 |
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, |
