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 | d07f86c9ba0eacab62833877a568195e1f3831c1 (patch) | |
| tree | 06f28ab40d8e602415e6ea885f89d1c75e82573f | |
| parent | bdcce61b945df2b095f7e0cca17d3633fdeebdf6 (diff) | |
| download | rabbitmq-server-git-d07f86c9ba0eacab62833877a568195e1f3831c1.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 3c0e9c4b47..71c13af26a 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, |
