summaryrefslogtreecommitdiff
path: root/src
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
commitf6279e1ade3cd11cc92231d363a82216702a7aa1 (patch)
tree5eab0ef9ffde377087c15118c3508683ebe99f28 /src
parent555069111963b59f8feb96146b55491c9987d694 (diff)
downloadrabbitmq-server-git-f6279e1ade3cd11cc92231d363a82216702a7aa1.tar.gz
Avoid always going through with_exit_handler/2, since that's what the comment says!
Diffstat (limited to 'src')
-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 865c467715..35703efac9 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}).