summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_framing_channel.erl34
-rw-r--r--src/rabbit_reader.erl6
2 files changed, 22 insertions, 18 deletions
diff --git a/src/rabbit_framing_channel.erl b/src/rabbit_framing_channel.erl
index bc1a2a0835..889e966315 100644
--- a/src/rabbit_framing_channel.erl
+++ b/src/rabbit_framing_channel.erl
@@ -73,15 +73,25 @@ read_frame(ChannelPid) ->
end.
mainloop(ChannelPid) ->
- {method, MethodName, FieldsBin} = read_frame(ChannelPid),
- Method = rabbit_framing:decode_method_fields(MethodName, FieldsBin),
- case rabbit_framing:method_has_content(MethodName) of
- true -> {ClassId, _MethodId} = rabbit_framing:method_id(MethodName),
- rabbit_channel:do(ChannelPid, Method,
- collect_content(ChannelPid, ClassId));
- false -> rabbit_channel:do(ChannelPid, Method)
- end,
- ?MODULE:mainloop(ChannelPid).
+ Decoded = read_frame(ChannelPid),
+ case Decoded of
+ {method, MethodName, FieldsBin} ->
+ Method = rabbit_framing:decode_method_fields(MethodName, FieldsBin),
+ case rabbit_framing:method_has_content(MethodName) of
+ true -> {ClassId, _MethodId} =
+ rabbit_framing:method_id(MethodName),
+ rabbit_channel:do(ChannelPid, Method,
+ collect_content(ChannelPid,
+ ClassId));
+ false -> rabbit_channel:do(ChannelPid, Method)
+ end,
+ ?MODULE:mainloop(ChannelPid);
+ _ ->
+ rabbit_misc:protocol_error(
+ unexpected_frame,
+ "expected method frame, got ~p instead",
+ [Decoded])
+ end.
collect_content(ChannelPid, ClassId) ->
case read_frame(ChannelPid) of
@@ -93,13 +103,13 @@ collect_content(ChannelPid, ClassId) ->
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])
@@ -115,7 +125,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.
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index b5514c822a..ccd51ffa91 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -823,12 +823,6 @@ map_exception(Channel, Reason) ->
end,
{ShouldClose, CloseChannel, CloseMethod}.
-%% FIXME: this clause can go when we move to AMQP spec >=8.1
-lookup_amqp_exception(#amqp_error{name = precondition_failed,
- explanation = Expl,
- method = Method}) ->
- ExplBin = amqp_exception_explanation(<<"PRECONDITION_FAILED">>, Expl),
- {false, 406, ExplBin, Method};
lookup_amqp_exception(#amqp_error{name = Name,
explanation = Expl,
method = Method}) ->