Skip to content

Commit ad8595f

Browse files
committed
Return 204 No Content on exchange declaration
1 parent c0d0ad0 commit ad8595f

File tree

4 files changed

+15
-19
lines changed

4 files changed

+15
-19
lines changed

deps/rabbit/src/rabbit_amqp_management.erl

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -98,22 +98,20 @@ handle_http_req(<<"PUT">>,
9898
ok = prohibit_default_exchange(XNameBin),
9999
XName = rabbit_misc:r(Vhost, exchange, XNameBin),
100100
ok = check_resource_access(XName, configure, User),
101-
{StatCode, X} = case rabbit_exchange:lookup(XName) of
102-
{ok, FoundX} ->
103-
{<<"200">>, FoundX};
104-
{error, not_found} ->
105-
ok = prohibit_cr_lf(XNameBin),
106-
ok = prohibit_reserved_amq(XName),
107-
X0 = rabbit_exchange:declare(
108-
XName, XTypeAtom, Durable, AutoDelete,
109-
Internal, XArgs, Username),
110-
{<<"201">>, X0}
111-
end,
101+
X = case rabbit_exchange:lookup(XName) of
102+
{ok, FoundX} ->
103+
FoundX;
104+
{error, not_found} ->
105+
ok = prohibit_cr_lf(XNameBin),
106+
ok = prohibit_reserved_amq(XName),
107+
rabbit_exchange:declare(
108+
XName, XTypeAtom, Durable, AutoDelete,
109+
Internal, XArgs, Username)
110+
end,
112111
try rabbit_exchange:assert_equivalence(
113112
X, XTypeAtom, Durable, AutoDelete, Internal, XArgs) of
114113
ok ->
115-
%%TODO Include the exchange in the response payload
116-
{StatCode, [], null}
114+
{<<"204">>, [], null}
117115
catch exit:#amqp_error{name = precondition_failed,
118116
explanation = Expl} ->
119117
throw(<<"409">>, Expl, [])

deps/rabbit/src/rabbit_db_exchange.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ update_in_khepri_tx(Name, Fun) ->
358358

359359
-spec create_or_get(Exchange) -> Ret when
360360
Exchange :: rabbit_types:exchange(),
361-
Ret :: {new, Exchange} | {existing, Exchange} | {error, any()}.
361+
Ret :: {new, Exchange} | {existing, Exchange}.
362362
%% @doc Writes an exchange record if it doesn't exist already or returns
363363
%% the existing one.
364364
%%

deps/rabbit/src/rabbit_exchange.erl

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ serial(X) ->
9494
-spec declare
9595
(name(), type(), boolean(), boolean(), boolean(),
9696
rabbit_framing:amqp_table(), rabbit_types:username())
97-
-> rabbit_types:exchange() | {error, term()}.
97+
-> rabbit_types:exchange().
9898

9999
declare(XName, Type, Durable, AutoDelete, Internal, Args, Username) ->
100100
X = rabbit_exchange_decorator:set(
@@ -123,9 +123,7 @@ declare(XName, Type, Durable, AutoDelete, Internal, Args, Username) ->
123123
rabbit_event:notify(exchange_created, info(Exchange)),
124124
Exchange;
125125
{existing, Exchange} ->
126-
Exchange;
127-
Err ->
128-
Err
126+
Exchange
129127
end;
130128
_ ->
131129
rabbit_log:warning("ignoring exchange.declare for exchange ~tp,

deps/rabbitmq_amqp_client/src/rabbitmq_amqp_client.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ declare_exchange(LinkPair, ExchangeProperties) ->
347347
case request(LinkPair, Props, Body) of
348348
{ok, Resp} ->
349349
case amqp10_msg:properties(Resp) of
350-
#{subject := <<"201">>} ->
350+
#{subject := <<"204">>} ->
351351
#'v1_0.amqp_value'{content = null} = amqp10_msg:body(Resp),
352352
ok;
353353
_ ->

0 commit comments

Comments
 (0)