Skip to content

Commit ede60f9

Browse files
the-mikedavismergify[bot]
authored andcommitted
rabbit_mqtt_processor: Handle failures to delete a queue
(cherry picked from commit a9c48ef)
1 parent 406efc3 commit ede60f9

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

deps/rabbitmq_mqtt/src/rabbit_mqtt_processor.erl

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,9 @@ handle_clean_start(_, QoS, State = #state{cfg = #cfg{clean_start = true}}) ->
769769
ok ->
770770
{ok, SessPresent, State};
771771
{error, access_refused} ->
772-
{error, ?RC_NOT_AUTHORIZED}
772+
{error, ?RC_NOT_AUTHORIZED};
773+
{error, _Reason} ->
774+
{error, ?RC_IMPLEMENTATION_SPECIFIC_ERROR}
773775
end
774776
end;
775777
handle_clean_start(SessPresent, QoS,
@@ -991,7 +993,8 @@ clear_will_msg(#state{cfg = #cfg{vhost = Vhost,
991993
QName = #resource{virtual_host = Vhost, kind = queue, name = QNameBin},
992994
case delete_queue(QName, State) of
993995
ok -> ok;
994-
{error, access_refused} -> {error, ?RC_NOT_AUTHORIZED}
996+
{error, access_refused} -> {error, ?RC_NOT_AUTHORIZED};
997+
{error, _Reason} -> {error, ?RC_IMPLEMENTATION_SPECIFIC_ERROR}
995998
end.
996999

9971000
make_will_msg(#mqtt_packet_connect{will_flag = false}) ->
@@ -1323,8 +1326,10 @@ ensure_queue(QoS, State) ->
13231326
case delete_queue(QName, State) of
13241327
ok ->
13251328
create_queue(QoS, State);
1326-
{error, access_refused} = E ->
1327-
E
1329+
{error, _} = Err ->
1330+
Err;
1331+
{protocol_error, _, _, _} = Err ->
1332+
{error, Err}
13281333
end;
13291334
{error, not_found} ->
13301335
create_queue(QoS, State)
@@ -1829,7 +1834,10 @@ maybe_delete_mqtt_qos0_queue(_) ->
18291834
ok.
18301835

18311836
-spec delete_queue(rabbit_amqqueue:name(), state()) ->
1832-
ok | {error, access_refused}.
1837+
ok |
1838+
{error, access_refused} |
1839+
{error, timeout} |
1840+
{protocol_error, Type :: atom(), Reason :: string(), Args :: term()}.
18331841
delete_queue(QName,
18341842
#state{auth_state = #auth_state{
18351843
user = User = #user{username = Username},
@@ -1841,8 +1849,12 @@ delete_queue(QName,
18411849
fun (Q) ->
18421850
case check_resource_access(User, QName, configure, AuthzCtx) of
18431851
ok ->
1844-
{ok, _N} = rabbit_queue_type:delete(Q, false, false, Username),
1845-
ok;
1852+
case rabbit_queue_type:delete(Q, false, false, Username) of
1853+
{ok, _} ->
1854+
ok;
1855+
Err ->
1856+
Err
1857+
end;
18461858
Err ->
18471859
Err
18481860
end

0 commit comments

Comments
 (0)