Skip to content

Commit

Permalink
WIP Change AMQP header durable to true by default
Browse files Browse the repository at this point in the history
AMQP 3.2.1 defines durable=false to be the default.

However, the same section also mentions:
> If the header section is omitted the receiver MUST assume the appropriate
> default values (or the meaning implied by no value being set) for the
> fields within the header unless other target or node specific defaults
> have otherwise been set.

We want RabbitMQ to be secure by default, hence in RabbitMQ we set
durable=true to be the default.
  • Loading branch information
ansd committed Apr 22, 2024
1 parent 5bc8ef2 commit 73d697a
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
14 changes: 8 additions & 6 deletions deps/rabbit/src/mc_amqp.erl
Original file line number Diff line number Diff line change
Expand Up @@ -146,11 +146,11 @@ get_property(durable, Msg) ->
Durable;
_ ->
%% fallback in case the source protocol was old AMQP 0.9.1
case message_annotation(<<"x-basic-delivery-mode">>, Msg, 2) of
{ubyte, 2} ->
true;
case message_annotation(<<"x-basic-delivery-mode">>, Msg, undefined) of
{ubyte, 1} ->
false;
_ ->
false
true
end
end;
get_property(timestamp, Msg) ->
Expand Down Expand Up @@ -195,7 +195,8 @@ protocol_state(Msg0 = #msg_body_decoded{header = Header0,
FirstAcquirer = first_acquirer(Anns),
Header = case Header0 of
undefined ->
#'v1_0.header'{first_acquirer = FirstAcquirer};
#'v1_0.header'{durable = true,
first_acquirer = FirstAcquirer};
#'v1_0.header'{} ->
Header0#'v1_0.header'{first_acquirer = FirstAcquirer}
end,
Expand All @@ -211,7 +212,8 @@ protocol_state(#msg_body_encoded{header = Header0,
FirstAcquirer = first_acquirer(Anns),
Header = case Header0 of
undefined ->
#'v1_0.header'{first_acquirer = FirstAcquirer};
#'v1_0.header'{durable = true,
first_acquirer = FirstAcquirer};
#'v1_0.header'{} ->
Header0#'v1_0.header'{first_acquirer = FirstAcquirer}
end,
Expand Down
6 changes: 3 additions & 3 deletions deps/rabbitmq_mqtt/src/mc_mqtt.erl
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,10 @@ convert_from(mc_amqp, Sections, Env) ->
amqp_encode(Val, Acc)
end, {undefined, [], undefined, [], [], undefined}, Sections),
Qos = case Header of
#'v1_0.header'{durable = true} ->
?QOS_1;
#'v1_0.header'{durable = false} ->
?QOS_0;
_ ->
?QOS_0
?QOS_1
end,
Props0 = case AmqpProps of
#'v1_0.properties'{reply_to = {utf8, Address}} ->
Expand Down

0 comments on commit 73d697a

Please sign in to comment.