From 248c83d08f9b4acafff74edc787dd19c4f222e0c Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Wed, 10 Jun 2009 15:30:49 +0100 Subject: [PATCH] respect channel blocking when adding consumers --- src/rabbit_amqqueue_process.erl | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index 41c2d101cf..f8cfddf1a0 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -644,11 +644,18 @@ handle_call({basic_consume, NoAck, ReaderPid, ChPid, LimiterPid, true -> ExistingHolder end, State1 = State#q{has_had_consumers = true, - exclusive_consumer = ExclusiveConsumer, - round_robin = queue:in({ChPid, Consumer}, - RoundRobin)}, + exclusive_consumer = ExclusiveConsumer}, ok = maybe_send_reply(ChPid, OkMsg), - reply(ok, run_poke_burst(State1)) + State2 = + case is_ch_blocked(C) of + true -> State1; + false -> run_poke_burst( + State1#q{ + round_robin = queue:in( + {ChPid, Consumer}, + RoundRobin)}) + end, + reply(ok, State2) end end;