diff options
author | Matthias Radestock <matthias@rabbitmq.com> | 2014-01-02 21:39:19 +0000 |
---|---|---|
committer | Matthias Radestock <matthias@rabbitmq.com> | 2014-01-02 21:39:19 +0000 |
commit | dc5b87dfa71e9f2cace9c2dd1c120d51f35518d2 (patch) | |
tree | 06f28ab40d8e602415e6ea885f89d1c75e82573f | |
parent | f1c99dcd3917b9e05127814a9e594ebbfe768657 (diff) | |
download | rabbitmq-server-dc5b87dfa71e9f2cace9c2dd1c120d51f35518d2.tar.gz |
become 1.0 with the correct state
-rw-r--r-- | src/rabbit_reader.erl | 9 |
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, |