File 2347-kernel-sctp-test-Tweaked-the-def_sndrcvinfo-test-cas.patch of Package erlang

From 8181802c56d1c6f3ce0b4e928038f11657ccc831 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Wed, 7 May 2025 11:52:15 +0200
Subject: [PATCH 7/8] [kernel|sctp|test] Tweaked the def_sndrcvinfo test case

---
 lib/kernel/test/gen_sctp_SUITE.erl | 34 +++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

diff --git a/lib/kernel/test/gen_sctp_SUITE.erl b/lib/kernel/test/gen_sctp_SUITE.erl
index d829629749..8350d828fd 100644
--- a/lib/kernel/test/gen_sctp_SUITE.erl
+++ b/lib/kernel/test/gen_sctp_SUITE.erl
@@ -690,6 +690,19 @@ recv_paddr_change(S, Addr, Port, Timeout) ->
 %% Test that #sctp_sndrcvinfo{} parameters set on a socket
 %% are used by gen_sctp:send/4.
 def_sndrcvinfo(Config) when is_list(Config) ->
+    Cond = fun() -> ok end,
+    Pre  = fun() -> case ?WHICH_LOCAL_ADDR(inet) of
+                        {ok, Addr} ->
+                            Addr;
+                        {error, Reason} ->
+                            throw({skip, Reason})
+                    end
+           end,
+    TC   = fun(Addr) -> do_def_sndrcvinfo(Addr) end,
+    Post = fun(_) -> ok end,
+    ?TC_TRY(?FUNCTION_NAME, Cond, Pre, TC, Post).
+
+do_def_sndrcvinfo(LAddr) ->
     Loopback = {127,0,0,1},
     Data = <<"What goes up, must come down.">>,
     %%
@@ -812,12 +825,31 @@ def_sndrcvinfo(Config) when is_list(Config) ->
 		    error=0, assoc_id=S1AssocId}}
 		  when State =:= addr_available;
 		       State =:= addr_confirmed ->
+                    %% We *may* get an paddr-event before the data event
+                    %% (on FreeBSD)
 		    case log_ok(gen_sctp:recv(S1)) of
 			{Loopback,P2,
 			 [#sctp_sndrcvinfo{
 			     stream=1, ppid=0, context=0,
 			     assoc_id=S1AssocId}],
-			 <<"3: ",Data/binary>>} -> ok
+			 <<"3: ",Data/binary>>} ->
+                            ok;
+                        {Loopback, P2, [],
+                          #sctp_paddr_change{addr     = {LAddr, _},
+                                             state    = addr_confirmed,
+                                             error    = 0,
+                                             assoc_id = S1AssocId}} ->
+                            ?P("~w -> paddr-change (addr-confirmed) event "
+                               "before data event - receive again",
+                               [?FUNCTION_NAME]),
+                            {Loopback,P2,
+                             [#sctp_sndrcvinfo{
+                                 stream   = 1,
+                                 ppid     = 0,
+                                 context  = 0,
+                                 assoc_id = S1AssocId}],
+                             <<"3: ",Data/binary>>} = log_ok(gen_sctp:recv(S1)),
+                            ok
 		    end
 	    end
     end,
-- 
2.43.0

openSUSE Build Service is sponsored by