@@ -202,42 +202,32 @@ deliver0(Q, Msg) ->
202202
203203-spec deliver_local (pid (), rabbit_amqqueue :name (), mc :state ()) -> ok .
204204deliver_local (Pid , QName , Msg ) ->
205- Evt = {queue_event , QName , {deliver , Msg }},
206205 % % We ensure clients can't use this mechanism to send a message
207206 % % to an arbitrary process and kill it.
208207 case rabbit_amqp_session :is_local (Pid ) orelse
209208 pg_local :in_group (rabbit_channels , Pid ) of
210209 true ->
211- gen_server :cast (Pid , Evt );
210+ gen_server :cast (Pid , { queue_event , QName , { deliver , Msg }} );
212211 false ->
213212 ok
214213 end .
215214
216215handle_event (QName , {deliver , Msg }, #? STATE {name = QName ,
217216 ctag = Ctag ,
218217 credit = undefined } = State ) ->
219- Actions = deliver_actions (QName , Ctag , Msg ),
220- {ok , State , Actions };
218+ {ok , State , deliver_actions (QName , Ctag , Msg )};
221219handle_event (QName , {deliver , Msg }, #? STATE {name = QName ,
222220 ctag = Ctag ,
223221 delivery_count = DeliveryCount ,
224- credit = Credit ,
225- dropped = Dropped } = State0 ) ->
226- {DC , C , D , Actions } = case Credit > 0 of
227- true ->
228- {serial_number :add (DeliveryCount , 1 ),
229- Credit - 1 ,
230- Dropped ,
231- deliver_actions (QName , Ctag , Msg )};
232- false ->
233- rabbit_global_counters :messages_dead_lettered (
234- maxlen , ? MODULE , disabled , 1 ),
235- {DeliveryCount , Credit , Dropped + 1 , []}
236- end ,
237- State = State0 #? STATE {delivery_count = DC ,
238- credit = C ,
239- dropped = D },
240- {ok , State , Actions }.
222+ credit = Credit } = State0 )
223+ when Credit > 0 ->
224+ State = State0 #? STATE {delivery_count = serial_number :add (DeliveryCount , 1 ),
225+ credit = Credit - 1 },
226+ {ok , State , deliver_actions (QName , Ctag , Msg )};
227+ handle_event (QName , {deliver , _Msg }, #? STATE {name = QName ,
228+ dropped = Dropped } = State ) ->
229+ rabbit_global_counters :messages_dead_lettered (maxlen , ? MODULE , disabled , 1 ),
230+ {ok , State #? STATE {dropped = Dropped + 1 }, []}.
241231
242232deliver_actions (QName , Ctag , Mc ) ->
243233 Msgs = [{QName , self (), undefined , _Redelivered = false , Mc }],
0 commit comments