summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_policy.erl6
-rw-r--r--src/rabbit_runtime_parameters.erl6
-rw-r--r--src/rabbit_vhost_limit.erl6
3 files changed, 15 insertions, 3 deletions
diff --git a/src/rabbit_policy.erl b/src/rabbit_policy.erl
index 1a28c26a1e..2106a12e4d 100644
--- a/src/rabbit_policy.erl
+++ b/src/rabbit_policy.erl
@@ -212,7 +212,11 @@ parse_set(Type, VHost, Name, Pattern, Definition, Priority, ApplyTo) ->
end.
parse_set0(Type, VHost, Name, Pattern, Defn, Priority, ApplyTo) ->
- case rabbit_json:try_decode(list_to_binary(Defn)) of
+ Definition = case Defn of
+ Defn when is_list(Defn) -> list_to_binary(Defn);
+ Defn -> Defn
+ end,
+ case rabbit_json:try_decode(Definition) of
{ok, Term} ->
set0(Type, VHost, Name,
[{<<"pattern">>, list_to_binary(Pattern)},
diff --git a/src/rabbit_runtime_parameters.erl b/src/rabbit_runtime_parameters.erl
index 567291fd7e..6571c4828e 100644
--- a/src/rabbit_runtime_parameters.erl
+++ b/src/rabbit_runtime_parameters.erl
@@ -97,7 +97,11 @@
parse_set(_, <<"policy">>, _, _, _) ->
{error_string, "policies may not be set using this method"};
parse_set(VHost, Component, Name, String, User) ->
- case rabbit_json:try_decode(list_to_binary(String)) of
+ Definition = case String of
+ String when is_list(String) -> list_to_binary(String);
+ String -> String
+ end,
+ case rabbit_json:try_decode(Definition) of
{ok, Term} when is_map(Term) -> set(VHost, Component, Name, maps:to_list(Term), User);
{ok, Term} -> set(VHost, Component, Name, Term, User);
error -> {error_string, "JSON decoding error"}
diff --git a/src/rabbit_vhost_limit.erl b/src/rabbit_vhost_limit.erl
index 7eac51e745..a54ba9629e 100644
--- a/src/rabbit_vhost_limit.erl
+++ b/src/rabbit_vhost_limit.erl
@@ -124,7 +124,11 @@ is_over_queue_limit(VirtualHost) ->
%%----------------------------------------------------------------------------
parse_set(VHost, Defn) ->
- case rabbit_json:try_decode(list_to_binary(Defn)) of
+ Definition = case Defn of
+ Defn when is_list(Defn) -> list_to_binary(Defn);
+ Defn -> Defn
+ end,
+ case rabbit_json:try_decode(Definition) of
{ok, Term} ->
set(VHost, maps:to_list(Term));
error ->