summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-02-12 16:26:23 +0000
committerSimon MacMullen <simon@rabbitmq.com>2013-02-12 16:26:23 +0000
commitc0d67a8548145383d3f62076e855ba97209d916f (patch)
tree69c2bc568738a1dbe266fa8aac6240e64b8f6a93 /src
parent4620410d0be26a38b0224b6a1faed51da8459451 (diff)
downloadrabbitmq-server-git-c0d67a8548145383d3f62076e855ba97209d916f.tar.gz
Clear drain flag when we run out of credit.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_limiter.erl7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/rabbit_limiter.erl b/src/rabbit_limiter.erl
index efc499cdf8..e76fc21762 100644
--- a/src/rabbit_limiter.erl
+++ b/src/rabbit_limiter.erl
@@ -209,8 +209,11 @@ update_credit(CTag, Credit, Drain, Credits) ->
false -> {[], NewCredits}
end.
-write_credit(CTag, Credit, Drain, Credits) ->
- dict:store(CTag, #credit{credit = Credit, drain = Drain}, Credits).
+write_credit(CTag, Credit, Drain, Credits) when Credit > 0 ->
+ dict:store(CTag, #credit{credit = Credit, drain = Drain}, Credits);
+%% Using up all credit means we do not need to send a drained event
+write_credit(CTag, Credit, _Drain, Credits) ->
+ dict:store(CTag, #credit{credit = Credit, drain = false}, Credits).
%%----------------------------------------------------------------------------
%% gen_server callbacks