diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-14 21:35:05 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-14 21:35:05 +0100 |
| commit | 29099ed7168a8aa4022df3e5087940d75a4d27db (patch) | |
| tree | 6692a4fc476ebf1ca607f7309a62dd72eefb85fb /src | |
| parent | 40ff16c1517d89ff6027e6b385e6c7b0bf1a3eb8 (diff) | |
| download | rabbitmq-server-git-29099ed7168a8aa4022df3e5087940d75a4d27db.tar.gz | |
DeMorgan a case
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_channel.erl | 12 |
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. |
