File 0978-fix-pick_peer-for-diameter_packet.patch of Package erlang
From 816a68bbd237366275771693b4999b53600edb9f Mon Sep 17 00:00:00 2001
From: Anupama Singh <anupamasingh31@gmail.com>
Date: Mon, 8 Apr 2024 05:31:07 +0000
Subject: [PATCH] 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 110fdcafb0..c93af06935 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 ac1d8c35fa..4a626adf0b 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,
@@ -952,6 +953,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).
@@ -1236,7 +1256,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};
--
2.35.3