summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2012-02-12 16:53:17 +0000
committerAlexandru Scvortov <alexandru@rabbitmq.com>2012-02-12 16:53:17 +0000
commitd8d0420bbecd508ad00655b38fa671b3c9ebea09 (patch)
tree3724aada612e50613fc1fc0f102d3f8ec2d86d12 /src
parent92eb78e23ddad3a10aba4120cf41e759530c3560 (diff)
downloadrabbitmq-server-git-d8d0420bbecd508ad00655b38fa671b3c9ebea09.tar.gz
don't hang if purging an empty queue with dlx
The queue.delete case had already been handled.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_amqqueue_process.erl8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index c64b4877e8..d5d68c7aa0 100644
--- a/src/rabbit_amqqueue_process.erl
+++ b/src/rabbit_amqqueue_process.erl
@@ -1260,8 +1260,12 @@ handle_call(purge, From, State = #q{backing_queue = BQ,
fun (_) -> true end,
mk_dead_letter_fun(queue_purged, State),
BQS),
- noreply(State#q{backing_queue_state = BQS1,
- blocked_op = {purge, {From, BQ:len(BQS)}}});
+ case BQ:len(BQS) of
+ 0 -> reply({ok, 0}, State#q{backing_queue_state = BQS1});
+ _ -> noreply(
+ State#q{backing_queue_state = BQS1,
+ blocked_op = {purge, {From, BQ:len(BQS)}}})
+ end;
handle_call({requeue, AckTags, ChPid}, From, State) ->
gen_server2:reply(From, ok),