diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2013-01-17 16:21:19 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2013-01-17 16:21:19 +0000 |
| commit | d9333897e5c9e372ce849173d95b5689bea5630f (patch) | |
| tree | 54dedee08d4aecf280c12f4be53b50ceedf6c76b /src | |
| parent | dfb3b2040d080c940dd71e412664f1c22c03c282 (diff) | |
| download | rabbitmq-server-git-d9333897e5c9e372ce849173d95b5689bea5630f.tar.gz | |
Unwind the stack before taking that one-way trip.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_reader.erl | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index 6d4becc086..a1dfeeff0e 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -245,6 +245,8 @@ start_connection(Parent, ChannelSupSupPid, Collector, StartHeartbeatFun, Deb, handshake, 8)), log(info, "closing AMQP connection ~p (~s)~n", [self(), Name]) catch + throw:{become, M, F, A} -> + apply(M, F, A); Ex -> log(case Ex of connection_closed_abruptly -> warning; _ -> error @@ -996,8 +998,8 @@ emit_stats(State) -> become_1_0(Mode, Version, State = #v1{sock = Sock}) -> case code:is_loaded(rabbit_amqp1_0_reader) of false -> refuse_connection(Sock, {bad_version, Version}); - _ -> M = rabbit_amqp1_0_reader, %% fool xref - M:become(Mode, pack_for_1_0(State)) + _ -> throw({become, rabbit_amqp1_0_reader, become, + [Mode, pack_for_1_0(State)]}) end. pack_for_1_0(#v1{parent = Parent, |
