summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2012-01-13 14:01:37 +0000
committerMatthias Radestock <matthias@rabbitmq.com>2012-01-13 14:01:37 +0000
commit4e36502bdcaeaa6c3a4809e03be6bbcfb8ba8c7f (patch)
tree82979325133d91030560c3279f52d87656c30c02 /src
parent0491bc836d96f69e942bbe2f569736fe59dca0dd (diff)
downloadrabbitmq-server-git-4e36502bdcaeaa6c3a4809e03be6bbcfb8ba8c7f.tar.gz
apply flow control to content bearing methods only
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_channel.erl5
-rw-r--r--src/rabbit_reader.erl3
2 files changed, 5 insertions, 3 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index c9714c3def..d87dc5d108 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -245,7 +245,10 @@ handle_call(_Request, _From, State) ->
noreply(State).
handle_cast({method, Method, Content}, State = #ch{conn_pid = Conn}) ->
- rabbit_flow:ack(Conn),
+ case Content of
+ none -> ok;
+ _ -> rabbit_flow:ack(Conn)
+ end,
try handle_method(Method, Content, State) of
{reply, Reply, NewState} ->
ok = rabbit_writer:send_command(NewState#ch.writer_pid, Reply),
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index f22b6b940c..22d238a5cf 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -923,8 +923,7 @@ send_to_new_channel(Channel, AnalyzedFrame, State) ->
process_channel_frame(Frame, ErrPid, Channel, ChPid, AState) ->
case rabbit_command_assembler:process(Frame, AState) of
{ok, NewAState} -> NewAState;
- {ok, Method, NewAState} -> rabbit_flow:send(ChPid),
- rabbit_channel:do(ChPid, Method),
+ {ok, Method, NewAState} -> rabbit_channel:do(ChPid, Method),
NewAState;
{ok, Method, Content, NewAState} -> rabbit_flow:send(ChPid),
rabbit_channel:do(ChPid,