@@ -695,19 +695,10 @@ send_delivery_state_changes(State0 = #state{cfg = #cfg{writer_pid = Writer,
695695 % % Order is important:
696696 % % 1. Process queue rejections.
697697 {RejectedIds , GrantCredits0 , State1 } = handle_stashed_rejected (State0 ),
698- maps :foreach (
699- fun ({QNameBin , Reason }, Ids ) ->
700- Description = reject_description (QNameBin , Reason ),
701- Info = {map ,
702- [{{symbol , <<" queue" >>}, {utf8 , QNameBin }},
703- {{symbol , <<" reason" >>}, {symbol , reject_reason_to_binary (Reason )}}]},
704- Rej = # 'v1_0.rejected' {
705- error = # 'v1_0.error' {
706- condition = ? V_1_0_AMQP_ERROR_PRECONDITION_FAILED ,
707- description = {utf8 , Description },
708- info = Info }},
709- send_dispositions (Ids , Rej , Writer , ChannelNum )
710- end , RejectedIds ),
698+ maps :foreach (fun ({QNameBin , Reason }, Ids ) ->
699+ Rejected = rejected (QNameBin , Reason ),
700+ send_dispositions (Ids , Rejected , Writer , ChannelNum )
701+ end , RejectedIds ),
711702 % % 2. Process queue confirmations.
712703 {AcceptedIds0 , GrantCredits1 , State2 } = handle_stashed_settled (GrantCredits0 , State1 ),
713704 % % 3. Process unavailable classic queues.
@@ -2487,7 +2478,7 @@ incoming_link_transfer(
24872478 Detach = detach (HandleInt , Link0 , Err1 ),
24882479 {error , [Detach ]};
24892480 false ->
2490- Disposition = rejected (DeliveryId , Err ),
2481+ Disposition = disposition_rejected (DeliveryId , Err ),
24912482 DeliveryCount = add (DeliveryCount0 , 1 ),
24922483 Credit1 = Credit0 - 1 ,
24932484 {Credit , Reply0 } = maybe_grant_link_credit (
@@ -2599,21 +2590,28 @@ released(DeliveryId) ->
25992590 settled = true ,
26002591 state = # 'v1_0.released' {}}.
26012592
2602- rejected (DeliveryId , Error ) ->
2593+ disposition_rejected (DeliveryId , Error ) ->
26032594 # 'v1_0.disposition' {role = ? AMQP_ROLE_RECEIVER ,
26042595 first = ? UINT (DeliveryId ),
26052596 settled = true ,
26062597 state = # 'v1_0.rejected' {error = Error }}.
26072598
2608- reject_description (QNameBin , maxlen ) ->
2609- <<" queue '" , QNameBin /binary , " ' exceeded maximum length" >>;
2610- reject_description (QNameBin , down ) ->
2611- <<" queue '" , QNameBin /binary , " ' is unavailable" >>.
2612-
2613- reject_reason_to_binary (maxlen ) ->
2614- <<" maxlen" >>;
2615- reject_reason_to_binary (down ) ->
2616- <<" unavailable" >>.
2599+ rejected (QNameBin , maxlen ) ->
2600+ # 'v1_0.rejected' {
2601+ error = # 'v1_0.error' {
2602+ condition = ? V_1_0_AMQP_ERROR_RESOURCE_LIMIT_EXCEEDED ,
2603+ description = {utf8 , <<" queue '" , QNameBin /binary , " ' exceeded maximum length" >>},
2604+ info = {map ,
2605+ [{{symbol , <<" queue" >>}, {utf8 , QNameBin }},
2606+ {{symbol , <<" reason" >>}, {symbol , <<" maxlen" >>}}]}}};
2607+ rejected (QNameBin , down ) ->
2608+ # 'v1_0.rejected' {
2609+ error = # 'v1_0.error' {
2610+ condition = ? V_1_0_AMQP_ERROR_PRECONDITION_FAILED ,
2611+ description = {utf8 , <<" queue '" , QNameBin /binary , " ' is unavailable" >>},
2612+ info = {map ,
2613+ [{{symbol , <<" queue" >>}, {utf8 , QNameBin }},
2614+ {{symbol , <<" reason" >>}, {symbol , <<" unavailable" >>}}]}}}.
26172615
26182616maybe_grant_link_credit (Credit , MaxLinkCredit , DeliveryCount , NumUnconfirmed , Handle ) ->
26192617 case grant_link_credit (Credit , MaxLinkCredit , NumUnconfirmed ) of
0 commit comments