Skip to content

Commit d5b71e0

Browse files
Merge pull request #3565 from rabbitmq/stream-queue-handle-unsupported-header-values
Stream queue: handle unsupported header value types
2 parents 3826a0d + 5520c6c commit d5b71e0

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

deps/rabbit/src/rabbit_msg_record.erl

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ from_amqp091(#'P_basic'{message_id = MsgId,
195195
<- case Headers of
196196
undefined -> [];
197197
_ -> Headers
198-
end],
198+
end, not unsupported_header_value_type(T)],
199199
%% properties that do not map directly to AMQP 1.0 properties are stored
200200
%% in application properties
201201
APC = map_add(utf8, <<"x-basic-type">>, utf8, Type,
@@ -395,6 +395,13 @@ message_id({utf8, S}, HKey, H0) ->
395395
message_id(MsgId, _, H) ->
396396
{H, unwrap(MsgId)}.
397397

398+
unsupported_header_value_type(array) ->
399+
true;
400+
unsupported_header_value_type(table) ->
401+
true;
402+
unsupported_header_value_type(_) ->
403+
false.
404+
398405
-ifdef(TEST).
399406
-include_lib("eunit/include/eunit.hrl").
400407
-endif.

deps/rabbit/test/rabbit_msg_record_SUITE.erl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ all() ->
2424
all_tests() ->
2525
[
2626
ampq091_roundtrip,
27+
unsupported_091_header_is_dropped,
2728
message_id_ulong,
2829
message_id_uuid,
2930
message_id_binary,
@@ -90,6 +91,22 @@ ampq091_roundtrip(_Config) ->
9091
test_amqp091_roundtrip(#'P_basic'{}, Payload),
9192
ok.
9293

94+
unsupported_091_header_is_dropped(_Config) ->
95+
Props = #'P_basic'{
96+
headers = [
97+
{<<"x-received-from">>, array, []}
98+
]
99+
},
100+
MsgRecord0 = rabbit_msg_record:from_amqp091(Props, <<"payload">>),
101+
MsgRecord = rabbit_msg_record:init(
102+
iolist_to_binary(rabbit_msg_record:to_iodata(MsgRecord0))),
103+
% meck:unload(),
104+
{PropsOut, <<"payload">>} = rabbit_msg_record:to_amqp091(MsgRecord),
105+
106+
?assertMatch(#'P_basic'{headers = undefined}, PropsOut),
107+
108+
ok.
109+
93110
message_id_ulong(_Config) ->
94111
Num = 9876789,
95112
ULong = erlang:integer_to_binary(Num),

0 commit comments

Comments
 (0)