summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_definitions.erl5
-rw-r--r--src/rabbit_exchange.erl14
2 files changed, 16 insertions, 3 deletions
diff --git a/src/rabbit_definitions.erl b/src/rabbit_definitions.erl
index 4d666b88fc..1d0a09f682 100644
--- a/src/rabbit_definitions.erl
+++ b/src/rabbit_definitions.erl
@@ -588,7 +588,8 @@ list_exchanges() ->
%% exclude internal exchanges, they are not meant to be declared or used by
%% applications
[exchange_definition(X) || X <- lists:filter(fun(#exchange{internal = true}) -> false;
- (#exchange{}) -> true
+ (#exchange{name = #resource{name = <<>>}}) -> false;
+ (X) -> not rabbit_exchange:is_amq_prefixed(X)
end,
rabbit_exchange:list())].
@@ -664,7 +665,7 @@ list_users() ->
end || U <- rabbit_auth_backend_internal:list_users()].
list_runtime_parameters() ->
- [runtime_parameter_definition(P) || P <- rabbit_runtime_parameters:list()].
+ [runtime_parameter_definition(P) || P <- rabbit_runtime_parameters:list(), is_list(P)].
runtime_parameter_definition(Param) ->
#{
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index df0138d165..fd9ff0c05b 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -24,7 +24,7 @@
update_scratch/3, update_decorators/1, immutable/1,
info_keys/0, info/1, info/2, info_all/1, info_all/2, info_all/4,
route/2, delete/3, validate_binding/2, count/0]).
--export([list_names/0]).
+-export([list_names/0, is_amq_prefixed/1]).
%% these must be run inside a mnesia tx
-export([maybe_auto_delete/2, serial/1, peek_serial/1, update/2]).
@@ -102,6 +102,18 @@ serial(#exchange{name = XName} = X) ->
(false) -> none
end.
+-spec is_amq_prefixed(rabbit_types:exchange() | binary()) -> boolean().
+
+is_amq_prefixed(Name) when is_binary(Name) ->
+ case re:run(Name, <<"^amq\.">>) of
+ nomatch -> false;
+ {match, _} -> true
+ end;
+is_amq_prefixed(#exchange{name = #resource{name = <<>>}}) ->
+ false;
+is_amq_prefixed(#exchange{name = #resource{name = Name}}) ->
+ is_amq_prefixed(Name).
+
-spec declare
(name(), type(), boolean(), boolean(), boolean(),
rabbit_framing:amqp_table(), rabbit_types:username())