summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_router.erl8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/rabbit_router.erl b/src/rabbit_router.erl
index ec049a1a2c..14d93497c6 100644
--- a/src/rabbit_router.erl
+++ b/src/rabbit_router.erl
@@ -54,7 +54,8 @@
%%----------------------------------------------------------------------------
deliver(QPids, Delivery = #delivery{mandatory = false,
- immediate = false}) ->
+ immediate = false,
+ message = Msg}) ->
%% optimisation: when Mandatory = false and Immediate = false,
%% rabbit_amqqueue:deliver will deliver the message to the queue
%% process asynchronously, and return true, which means all the
@@ -64,6 +65,11 @@ deliver(QPids, Delivery = #delivery{mandatory = false,
%% case below.
delegate:invoke_no_result(
QPids, fun (Pid) -> rabbit_amqqueue:deliver(Pid, Delivery) end),
+ case {QPids, Msg#basic_message.msg_seq_no} of
+ {[], undefined} -> ok;
+ {[], MsgSeqNo} -> rabbit_channel:confirm(Msg#basic_message.origin, MsgSeqNo);
+ _ -> ok
+ end,
{routed, QPids};
deliver(QPids, Delivery) ->