summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2014-01-02 21:39:19 +0000
committerMatthias Radestock <matthias@rabbitmq.com>2014-01-02 21:39:19 +0000
commitdc5b87dfa71e9f2cace9c2dd1c120d51f35518d2 (patch)
tree06f28ab40d8e602415e6ea885f89d1c75e82573f
parentf1c99dcd3917b9e05127814a9e594ebbfe768657 (diff)
downloadrabbitmq-server-dc5b87dfa71e9f2cace9c2dd1c120d51f35518d2.tar.gz
become 1.0 with the correct state
-rw-r--r--src/rabbit_reader.erl9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index 3c0e9c4b..71c13af2 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -280,6 +280,8 @@ recvloop(Deb, State = #v1{pending_recv = true}) ->
mainloop(Deb, State);
recvloop(Deb, State = #v1{connection_state = blocked}) ->
mainloop(Deb, State);
+recvloop(Deb, State = #v1{connection_state = {become, F}}) ->
+ throw({become, F(Deb, State)});
recvloop(Deb, State = #v1{sock = Sock, recv_len = RecvLen, buf_len = BufLen})
when BufLen < RecvLen ->
ok = rabbit_net:setopts(Sock, [{active, once}]),
@@ -1118,8 +1120,11 @@ become_1_0(Id, State = #v1{sock = Sock}) ->
Sock, {unsupported_amqp1_0_protocol_id, Id},
{3, 1, 0, 0})
end,
- throw({become, {rabbit_amqp1_0_reader, init,
- [Mode, pack_for_1_0(State)]}})
+ F = fun (_Deb, S) ->
+ {rabbit_amqp1_0_reader, init,
+ [Mode, pack_for_1_0(S)]}
+ end,
+ State = #v1{connection_state = {become, F}}
end.
pack_for_1_0(#v1{parent = Parent,