diff options
| author | Rob Harrop <rob@rabbitmq.com> | 2011-07-19 11:05:11 +0100 |
|---|---|---|
| committer | Rob Harrop <rob@rabbitmq.com> | 2011-07-19 11:05:11 +0100 |
| commit | 57076e95920128cbd425e3e252cd4948aa6c0dd4 (patch) | |
| tree | 93e7c2fd401bee8fe2c4e8ea714ef4bc42be04aa /src | |
| parent | aca4e9c457701fc1777b8a624d8817233b8531c8 (diff) | |
| parent | 32d89eaeaa509b1a9989050b5cd07ffead0e6da8 (diff) | |
| download | rabbitmq-server-git-57076e95920128cbd425e3e252cd4948aa6c0dd4.tar.gz | |
Merge bug24273 into default
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_channel.erl | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl index 8310bd8eb5..f398fcc59f 100644 --- a/src/rabbit_channel.erl +++ b/src/rabbit_channel.erl @@ -1131,10 +1131,16 @@ handle_publishing_queue_down(QPid, Reason, State = #ch{unconfirmed_qm = UQM}) -> %% process_confirms to prevent each MsgSeqNo being removed from %% the set one by one which which would be inefficient State1 = State#ch{unconfirmed_qm = gb_trees:delete_any(QPid, UQM)}, - {Nack, SendFun} = case Reason of - normal -> {false, fun record_confirms/2}; - _ -> {true, fun send_nacks/2} - end, + {Nack, SendFun} = + case Reason of + Reason when Reason =:= noproc; Reason =:= noconnection; + Reason =:= normal; Reason =:= shutdown -> + {false, fun record_confirms/2}; + {shutdown, _} -> + {false, fun record_confirms/2}; + _ -> + {true, fun send_nacks/2} + end, {MXs, State2} = process_confirms(MsgSeqNos, QPid, Nack, State1), erase_queue_stats(QPid), State3 = SendFun(MXs, State2), |
