diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2012-01-13 14:01:37 +0000 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2012-01-13 14:01:37 +0000 |
| commit | 4e36502bdcaeaa6c3a4809e03be6bbcfb8ba8c7f (patch) | |
| tree | 82979325133d91030560c3279f52d87656c30c02 /src | |
| parent | 0491bc836d96f69e942bbe2f569736fe59dca0dd (diff) | |
| download | rabbitmq-server-git-4e36502bdcaeaa6c3a4809e03be6bbcfb8ba8c7f.tar.gz | |
apply flow control to content bearing methods only
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_channel.erl | 5 | ||||
| -rw-r--r-- | src/rabbit_reader.erl | 3 |
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, |
