From 4edb9019c32c368ad003161f94f418fec0d3156d Mon Sep 17 00:00:00 2001 From: Michael Klishin Date: Thu, 16 Jan 2025 20:41:23 -0500 Subject: [PATCH] HTTP API: format empty consumer.channel_details as an empty object and not an empty JSON array. We have previously addressed this class of issues in other places. --- .../src/rabbit_mgmt_format.erl | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/deps/rabbitmq_management_agent/src/rabbit_mgmt_format.erl b/deps/rabbitmq_management_agent/src/rabbit_mgmt_format.erl index 59a5f01e609a..87004d03781f 100644 --- a/deps/rabbitmq_management_agent/src/rabbit_mgmt_format.erl +++ b/deps/rabbitmq_management_agent/src/rabbit_mgmt_format.erl @@ -579,12 +579,20 @@ format_channel_details(Any) -> Any. -spec format_consumer_arguments(proplists:proplist()) -> proplists:proplist(). format_consumer_arguments(Obj) -> - case pget(arguments, Obj) of - undefined -> Obj; - #{} -> Obj; - [] -> pset(arguments, #{}, Obj); - Args -> pset(arguments, amqp_table(Args), Obj) - end. + %% Make sure arguments is a map and not an empty list + Obj1 = case pget(arguments, Obj) of + undefined -> Obj; + #{} -> Obj; + [] -> pset(arguments, #{}, Obj); + Args -> pset(arguments, amqp_table(Args), Obj) + end, + %% Make sure channel_details is a map and not an empty list + case pget(channel_details, Obj1) of + undefined -> Obj1; + #{} -> Obj1; + [] -> pset(channel_details, #{}, Obj1); + _ -> Obj1 + end. parse_bool(<<"true">>) -> true;