summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-01-31 15:23:50 +0000
committerSimon MacMullen <simon@rabbitmq.com>2013-01-31 15:23:50 +0000
commit9720758be509d763cb7497fe22e7e4b40fb373e3 (patch)
tree5eab0ef9ffde377087c15118c3508683ebe99f28
parent39ac6385e1e3b0d215349ec3dc3476eda9432c7d (diff)
downloadrabbitmq-server-9720758be509d763cb7497fe22e7e4b40fb373e3.tar.gz
Avoid always going through with_exit_handler/2, since that's what the comment says!
-rw-r--r--src/rabbit_limiter.erl20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/rabbit_limiter.erl b/src/rabbit_limiter.erl
index 865c4677..35703efa 100644
--- a/src/rabbit_limiter.erl
+++ b/src/rabbit_limiter.erl
@@ -104,22 +104,15 @@ limit(Limiter, PrefetchCount) ->
%% breaching a limit. Note that we don't use maybe_call here in order
%% to avoid always going through with_exit_handler/2, even when the
%% limiter is disabled.
-can_send(Token, QPid, AckRequired, ChPid, CTag, Len) ->
- rabbit_misc:with_exit_handler(
- fun () -> true end,
- fun () -> can_send0(Token, QPid, AckRequired, ChPid, CTag, Len) end).
-
-can_send0(Token = #token{pid = Pid, enabled = Enabled, q_state = Credits},
- QPid, AckRequired, ChPid, CTag, Len) ->
+can_send(Token = #token{pid = Pid, enabled = Enabled, q_state = Credits},
+ QPid, AckReq, ChPid, CTag, Len) ->
ConsAllows = case dict:find(CTag, Credits) of
{ok, #credit{credit = C}} when C > 0 -> true;
{ok, #credit{}} -> false;
error -> true
end,
case ConsAllows of
- true -> case not Enabled orelse
- gen_server2:call(
- Pid, {can_send, QPid, AckRequired}, infinity) of
+ true -> case not Enabled orelse call_can_send(Pid, QPid, AckReq) of
true -> Credits2 = record_send_q(
CTag, Len, ChPid, Credits),
Token#token{q_state = Credits2};
@@ -128,6 +121,13 @@ can_send0(Token = #token{pid = Pid, enabled = Enabled, q_state = Credits},
false -> consumer_blocked
end.
+call_can_send(Pid, QPid, AckRequired) ->
+ rabbit_misc:with_exit_handler(
+ fun () -> true end,
+ fun () ->
+ gen_server2:call(Pid, {can_send, QPid, AckRequired}, infinity)
+ end).
+
%% Let the limiter know that the channel has received some acks from a
%% consumer
ack(Limiter, Count) -> maybe_cast(Limiter, {ack, Count}).