summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2010-07-20 13:01:41 +0100
committerSimon MacMullen <simon@rabbitmq.com>2010-07-20 13:01:41 +0100
commit1575f277cd6b477f5747d8f2253c6cf12a0a0c62 (patch)
treee42af15a6facd28629f54919e0b63eb4d5ecddc6 /src
parent3b93007137e1a5d2259ca954bfbc77d81f622d26 (diff)
downloadrabbitmq-server-git-1575f277cd6b477f5747d8f2253c6cf12a0a0c62.tar.gz
Cherry-pick the last differences between bug 22889 and amqp_0_9_1.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_exchange.erl1
-rw-r--r--src/rabbit_framing_channel.erl35
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.