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;