diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2013-01-31 15:23:50 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2013-01-31 15:23:50 +0000 |
| commit | f6279e1ade3cd11cc92231d363a82216702a7aa1 (patch) | |
| tree | 5eab0ef9ffde377087c15118c3508683ebe99f28 /src | |
| parent | 555069111963b59f8feb96146b55491c9987d694 (diff) | |
| download | rabbitmq-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.erl | 20 |
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}). |
