diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2010-07-20 13:01:41 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2010-07-20 13:01:41 +0100 |
| commit | 1575f277cd6b477f5747d8f2253c6cf12a0a0c62 (patch) | |
| tree | e42af15a6facd28629f54919e0b63eb4d5ecddc6 | |
| parent | 3b93007137e1a5d2259ca954bfbc77d81f622d26 (diff) | |
| download | rabbitmq-server-git-1575f277cd6b477f5747d8f2253c6cf12a0a0c62.tar.gz | |
Cherry-pick the last differences between bug 22889 and amqp_0_9_1.
| -rw-r--r-- | src/rabbit_exchange.erl | 1 | ||||
| -rw-r--r-- | src/rabbit_framing_channel.erl | 35 |
2 files changed, 22 insertions, 14 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index d91ebe9ba9..44b001d34f 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -388,7 +388,6 @@ cleanup_deleted_queue_bindings1(ExchangeName, Bindings) -> [X] = mnesia:read({rabbit_exchange, ExchangeName}), {maybe_auto_delete(X), Bindings}. - delete_forward_routes(Route) -> ok = mnesia:delete_object(rabbit_route, Route, write), ok = mnesia:delete_object(rabbit_durable_route, Route, write). diff --git a/src/rabbit_framing_channel.erl b/src/rabbit_framing_channel.erl index 3d74b122d9..333604c835 100644 --- a/src/rabbit_framing_channel.erl +++ b/src/rabbit_framing_channel.erl @@ -73,16 +73,25 @@ read_frame(ChannelPid) -> end. mainloop(ChannelPid, Protocol) -> - {method, MethodName, FieldsBin} = read_frame(ChannelPid), - Method = Protocol:decode_method_fields(MethodName, FieldsBin), - case Protocol:method_has_content(MethodName) of - true -> {ClassId, _MethodId} = Protocol:method_id(MethodName), - rabbit_channel:do(ChannelPid, Method, - collect_content(ChannelPid, ClassId, - Protocol)); - false -> rabbit_channel:do(ChannelPid, Method) - end, - ?MODULE:mainloop(ChannelPid, Protocol). + Decoded = read_frame(ChannelPid), + case Decoded of + {method, MethodName, FieldsBin} -> + Method = Protocol:decode_method_fields(MethodName, FieldsBin), + case Protocol:method_has_content(MethodName) of + true -> {ClassId, _MethodId} = Protocol:method_id(MethodName), + rabbit_channel:do(ChannelPid, Method, + collect_content(ChannelPid, + ClassId, + Protocol)); + false -> rabbit_channel:do(ChannelPid, Method) + end, + ?MODULE:mainloop(ChannelPid, Protocol); + _ -> + rabbit_misc:protocol_error( + unexpected_frame, + "expected method frame, got ~p instead", + [Decoded]) + end. collect_content(ChannelPid, ClassId, Protocol) -> case read_frame(ChannelPid) of @@ -95,13 +104,13 @@ collect_content(ChannelPid, ClassId, Protocol) -> payload_fragments_rev = Payload}; {content_header, HeaderClassId, 0, _BodySize, _PropertiesBin} -> rabbit_misc:protocol_error( - command_invalid, + unexpected_frame, "expected content header for class ~w, " "got one for class ~w instead", [ClassId, HeaderClassId]); _ -> rabbit_misc:protocol_error( - command_invalid, + unexpected_frame, "expected content header for class ~w, " "got non content header frame instead", [ClassId]) @@ -117,7 +126,7 @@ collect_content_payload(ChannelPid, RemainingByteCount, Acc) -> [FragmentBin | Acc]); _ -> rabbit_misc:protocol_error( - command_invalid, + unexpected_frame, "expected content body, got non content body frame instead", []) end. |
