summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2011-01-12 13:03:00 +0000
committerMatthew Sackman <matthew@rabbitmq.com>2011-01-12 13:03:00 +0000
commitd4174bed54b2a6c058277aa2d6d6d163cc56a47d (patch)
tree317e7a2548cf62e9766268dab39c30c7a975fced
parent2e5e71b22c8d653330de495fcc47c5c986a38949 (diff)
downloadrabbitmq-server-d4174bed54b2a6c058277aa2d6d6d163cc56a47d.tar.gz
Mandatory delivery only needs to know that it got to the queue. Not the result of delivery
-rw-r--r--src/rabbit_amqqueue_process.erl9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index 1ca783e0..38b83117 100644
--- a/src/rabbit_amqqueue_process.erl
+++ b/src/rabbit_amqqueue_process.erl
@@ -857,10 +857,11 @@ handle_call({deliver_immediately, Delivery},
attempt_delivery(Delivery, record_confirm_message(Delivery, State)),
reply(Delivered, State1);
-handle_call({deliver, Delivery}, _From, State) ->
- %% Synchronous, "mandatory" delivery mode
- {Delivered, NewState} = deliver_or_enqueue(Delivery, State),
- reply(Delivered, NewState);
+handle_call({deliver, Delivery}, From, State) ->
+ %% Synchronous, "mandatory" delivery mode. Reply asap.
+ gen_server2:reply(From, true),
+ {_Delivered, NewState} = deliver_or_enqueue(Delivery, State),
+ noreply(NewState);
handle_call({commit, Txn, ChPid}, From, State) ->
NewState = commit_transaction(Txn, From, ChPid, State),