Skip to content

Commit e48b0c5

Browse files
committed
Avoid function clause
Avoid following function clause error: ``` [{rabbit_amqp_session,incoming_mgmt_link_transfer, [{'v1_0.transfer', {uint,0}, {uint,1}, {binary,<<0>>}, {uint,0}, false,false,undefined,undefined,undefined,undefined,undefined}, <<0,83,112,192,2,1,65>>, {state, {cfg,65528,<0.3506.0>,<0.3510.0>, {user,<<"guest">>, [administrator], [{rabbit_auth_backend_internal, #Fun<rabbit_auth_backend_internal.3.111050101>}]}, <<"/">>,1,0,#{},none,<<"127.0.0.1:43416 -> 127.0.0.1:5672">>}, 2,398,4294967292,1600,2147483645, {[],[]}, 0,#{},#{},#{},#{},#{},#{},[],[],[],[], {rabbit_queue_type,#{}}, [{{resource,<<"/">>,exchange,<<>>},write}, {{resource,<<"/">>,queue, <<"ResourceListenerTest_publisherIsClosedOnExchangeDeletion-aec3-6e1a90386458">>}, configure}], []}], [{file,"rabbit_amqp_session.erl"},{line,1694}]}, {rabbit_amqp_session,handle_control,2, [{file,"rabbit_amqp_session.erl"},{line,1068}]}, {rabbit_amqp_session,handle_cast,2, [{file,"rabbit_amqp_session.erl"},{line,391}]}, {gen_server,try_handle_cast,3,[{file,"gen_server.erl"},{line,1121}]}, {gen_server,handle_msg,6,[{file,"gen_server.erl"},{line,1183}]}, {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,241}]}] [condition = amqp:internal-error] ``` when the client keeps sending messages although its target queue got deleted and the server already sent a DETACH frame to the client. From now on, the server instead closes the session with session error amqp:session:unattached-handle The test case is included in the AMQP Java client.
1 parent e610ada commit e48b0c5

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

deps/rabbit/src/rabbit_amqp_session.erl

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1693,11 +1693,8 @@ delivery_tag(MsgId = {Priority, Seq}, _)
16931693

16941694
incoming_mgmt_link_transfer(
16951695
#'v1_0.transfer'{
1696-
%% We only allow settled management requests
1697-
%% given that we are going to send a response anyway.
1698-
settled = true,
1699-
%% In the current implementation, we disallow large incoming management request messages.
1700-
more = false,
1696+
settled = Settled,
1697+
more = More,
17011698
handle = IncomingHandle = ?UINT(IncomingHandleInt)},
17021699
Request,
17031700
#state{management_link_pairs = LinkPairs,
@@ -1712,15 +1709,19 @@ incoming_mgmt_link_transfer(
17121709
user = User,
17131710
reader_pid = ReaderPid}
17141711
} = State0) ->
1715-
17161712
IncomingLink0 = case maps:find(IncomingHandleInt, IncomingLinks) of
17171713
{ok, Link} ->
17181714
Link;
17191715
error ->
17201716
protocol_error(
1721-
?V_1_0_AMQP_ERROR_ILLEGAL_STATE,
1717+
?V_1_0_SESSION_ERROR_UNATTACHED_HANDLE,
17221718
"Unknown link handle: ~p", [IncomingHandleInt])
17231719
end,
1720+
%% We only allow settled management requests
1721+
%% given that we are going to send a response anyway.
1722+
true = Settled,
1723+
%% In the current implementation, we disallow large incoming management request messages.
1724+
false = More,
17241725
#management_link{name = Name,
17251726
delivery_count = IncomingDeliveryCount0,
17261727
credit = IncomingCredit0,

0 commit comments

Comments
 (0)