summaryrefslogtreecommitdiff
path: root/src/rabbit_router.erl
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2010-08-19 14:04:23 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2010-08-19 14:04:23 +0100
commitce2d00203a0d3e32b368b5f3030232785f581c4c (patch)
tree7b0289e3ea7e8d829e25f25670a6c72c341e7f47 /src/rabbit_router.erl
parent927123ab191313b0ad2d8b28d29ba50ec0f11c9f (diff)
downloadrabbitmq-server-ce2d00203a0d3e32b368b5f3030232785f581c4c.tar.gz
don't do any unnecessary work when publishing in confirm mode
Diffstat (limited to 'src/rabbit_router.erl')
-rw-r--r--src/rabbit_router.erl7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/rabbit_router.erl b/src/rabbit_router.erl
index 179c45bb..3d270916 100644
--- a/src/rabbit_router.erl
+++ b/src/rabbit_router.erl
@@ -66,11 +66,12 @@ deliver(QPids, Delivery = #delivery{mandatory = false,
delegate:invoke_no_result(
QPids, fun (Pid) -> rabbit_amqqueue:deliver(Pid, Delivery) end),
case {QPids, MsgSeqNo} of
- {[], _} ->
+ {_, undefined} -> ok;
+ {[], _} ->
%% No queues will get the message. This is fine, so we
%% just confirm it.
rabbit_channel:confirm(self(), MsgSeqNo);
- _ -> ok
+ _ -> ok
end,
maybe_inform_channel(MsgSeqNo, QPids),
{routed, QPids};
@@ -129,7 +130,7 @@ check_delivery(true, _ , {false, []}) -> {unroutable, []};
check_delivery(_ , true, {_ , []}) -> {not_delivered, []};
check_delivery(_ , _ , {_ , Qs}) -> {routed, Qs}.
-maybe_inform_channel(undefine, _) ->
+maybe_inform_channel(undefined, _) ->
ok;
maybe_inform_channel(MsgSeqNo, QPids) ->
gen_server2:cast(self(), {msg_sent_to_queues, MsgSeqNo, QPids}).