summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2011-09-14 21:35:05 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2011-09-14 21:35:05 +0100
commit29099ed7168a8aa4022df3e5087940d75a4d27db (patch)
tree6692a4fc476ebf1ca607f7309a62dd72eefb85fb /src
parent40ff16c1517d89ff6027e6b385e6c7b0bf1a3eb8 (diff)
downloadrabbitmq-server-git-29099ed7168a8aa4022df3e5087940d75a4d27db.tar.gz
DeMorgan a case
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_channel.erl12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index a0d7fe7932..861a3b3acd 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -1146,18 +1146,20 @@ consumer_monitor(ConsumerTag,
demonitor_queue(QPid, #ch{stats_timer = StatsTimer,
consumer_monitors = ConsumerMonitors,
- blocking = Blocking}) ->
+ blocking = Blocking,
+ unconfirmed_qm = UQM}) ->
case get({monitoring, QPid}) of
undefined -> ok;
MRef -> StatsEnabled = rabbit_event:stats_level(StatsTimer) =:= fine,
ConsumerMonitored =
dict:find(MRef, ConsumerMonitors) =/= error,
QueueBlocked = gb_sets:is_element(QPid, Blocking),
- case not StatsEnabled and not ConsumerMonitored and
- not QueueBlocked of
- true -> true = erlang:demonitor(MRef),
+ ConfirmMonitored = gb_trees:is_defined(QPid, UQM),
+ case StatsEnabled or ConsumerMonitored or
+ QueueBlocked or ConfirmMonitored of
+ false -> true = erlang:demonitor(MRef),
erase({monitoring, QPid});
- false -> ok
+ true -> ok
end,
ok
end.