From d11e645b032491212d7bd6a331b8ea2c84d7ac25 Mon Sep 17 00:00:00 2001 From: Anupama Singh Date: Mon, 8 Apr 2024 05:31:07 +0000 Subject: [PATCH 1/2] fix pick_peer for diameter_packet --- lib/diameter/src/base/diameter_traffic.erl | 6 ++++++ lib/diameter/test/diameter_traffic_SUITE.erl | 21 +++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/diameter/src/base/diameter_traffic.erl b/lib/diameter/src/base/diameter_traffic.erl index 110fdcafb0dd..c93af06935c4 100644 --- a/lib/diameter/src/base/diameter_traffic.erl +++ b/lib/diameter/src/base/diameter_traffic.erl @@ -1785,6 +1785,12 @@ pick_peer(SvcName, CallOpts) -> pick_peer(SvcName, App, Msg, CallOpts#options{extra = []}); +pick_peer(SvcName, + App, + #diameter_packet{msg = Msg}, + CallOpts) -> + pick_peer(SvcName, App, Msg, CallOpts#options{extra = []}); + pick_peer(_, _, undefined, _) -> {error, no_connection}; diff --git a/lib/diameter/test/diameter_traffic_SUITE.erl b/lib/diameter/test/diameter_traffic_SUITE.erl index 95ea6be02065..4b12954e1d3a 100644 --- a/lib/diameter/test/diameter_traffic_SUITE.erl +++ b/lib/diameter/test/diameter_traffic_SUITE.erl @@ -80,6 +80,7 @@ send_destination_4/1, send_destination_5/1, send_destination_6/1, + send_destination_7/1, send_bad_option_1/1, send_bad_option_2/1, send_bad_filter_1/1, @@ -889,6 +890,25 @@ send_destination_6(Config) -> ?answer_message(?UNABLE_TO_DELIVER) = call(Config, Req). +%% Send unknown host in diameter_packet with filtering and expect error. +send_destination_7(Config) -> + #group{client_service = CN, + client_dict = Dict0} + = group(Config), + Name = proplists:get_value(testcase, Config), + Svc = ?util:unique_string(), + SN = [$S | Svc], + Req = + #diameter_packet{msg = ['STR' | + #{'Termination-Cause' => ?LOGOUT, + 'Destination-Host' => [?HOST(SN, ?REALM)]}]}, + {error, no_connection} = + diameter:call(CN, + Dict0, + Req, + [{extra, [Name, diameter_lib:now()]}, + {filter, {all, [host, realm]}}]). + %% Specify an invalid option and expect failure. send_bad_option_1(Config) -> send_bad_option(Config, x). @@ -1173,7 +1193,6 @@ id(Id, {Pid, _Caps}, SvcName) -> lists:member({id, Id}, Opts). %% prepare_request/6-7 - prepare_request(_Pkt, [$C|_], {_Ref, _Caps}, _, send_discard, _) -> {discard, unprepared}; From 6cc4134d0f4a0c2d3edf9f002d3a2c1f4a7b221a Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Thu, 30 May 2024 10:16:55 +0200 Subject: [PATCH 2/2] [diameter|doc] Update spec Update the spec of diameter:call to include diameter_codec:packet for the Request argument. OTP-19090 --- lib/diameter/doc/src/diameter.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/diameter/doc/src/diameter.xml b/lib/diameter/doc/src/diameter.xml index 5536dd9860c1..672003c5837f 100644 --- a/lib/diameter/doc/src/diameter.xml +++ b/lib/diameter/doc/src/diameter.xml @@ -1643,7 +1643,7 @@ its transports.

SvcName = &service_name; App = &application_alias; -Request = &codec_message; +Request = &codec_message; | &codec_packet; Answer = term() Opt = &call_opt;