@@ -769,7 +769,9 @@ handle_clean_start(_, QoS, State = #state{cfg = #cfg{clean_start = true}}) ->
769
769
ok ->
770
770
{ok , SessPresent , State };
771
771
{error , access_refused } ->
772
- {error , ? RC_NOT_AUTHORIZED }
772
+ {error , ? RC_NOT_AUTHORIZED };
773
+ {error , _Reason } ->
774
+ {error , ? RC_IMPLEMENTATION_SPECIFIC_ERROR }
773
775
end
774
776
end ;
775
777
handle_clean_start (SessPresent , QoS ,
@@ -991,7 +993,8 @@ clear_will_msg(#state{cfg = #cfg{vhost = Vhost,
991
993
QName = # resource {virtual_host = Vhost , kind = queue , name = QNameBin },
992
994
case delete_queue (QName , State ) of
993
995
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 }
995
998
end .
996
999
997
1000
make_will_msg (# mqtt_packet_connect {will_flag = false }) ->
@@ -1323,8 +1326,10 @@ ensure_queue(QoS, State) ->
1323
1326
case delete_queue (QName , State ) of
1324
1327
ok ->
1325
1328
create_queue (QoS , State );
1326
- {error , access_refused } = E ->
1327
- E
1329
+ {error , _ } = Err ->
1330
+ Err ;
1331
+ {protocol_error , _ , _ , _ } = Err ->
1332
+ {error , Err }
1328
1333
end ;
1329
1334
{error , not_found } ->
1330
1335
create_queue (QoS , State )
@@ -1829,7 +1834,10 @@ maybe_delete_mqtt_qos0_queue(_) ->
1829
1834
ok .
1830
1835
1831
1836
-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 ()}.
1833
1841
delete_queue (QName ,
1834
1842
# state {auth_state = # auth_state {
1835
1843
user = User = # user {username = Username },
@@ -1841,8 +1849,12 @@ delete_queue(QName,
1841
1849
fun (Q ) ->
1842
1850
case check_resource_access (User , QName , configure , AuthzCtx ) of
1843
1851
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 ;
1846
1858
Err ->
1847
1859
Err
1848
1860
end
0 commit comments