diff options
author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-08-19 14:04:23 +0100 |
---|---|---|
committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-08-19 14:04:23 +0100 |
commit | ce2d00203a0d3e32b368b5f3030232785f581c4c (patch) | |
tree | 7b0289e3ea7e8d829e25f25670a6c72c341e7f47 /src/rabbit_router.erl | |
parent | 927123ab191313b0ad2d8b28d29ba50ec0f11c9f (diff) | |
download | rabbitmq-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.erl | 7 |
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}). |