File 2341-kernel-sctp-Merge-default-options.patch of Package erlang

From 08eab01dc4b3d6726ab481be4d2c7eb6495a299a Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Tue, 29 Apr 2025 17:59:17 +0200
Subject: [PATCH 1/8] [kernel|sctp] Merge default options

When providing default options via the 'inet_default_sctp_options'
kernel config parameter, these options must be merged with the
builtin default options. This will become the "base options"
which in turn will be "merged" with the user provided options.

OTP-19627
---
 lib/kernel/src/inet.erl | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/lib/kernel/src/inet.erl b/lib/kernel/src/inet.erl
index c44f59bf5d..fe0aaa165a 100644
--- a/lib/kernel/src/inet.erl
+++ b/lib/kernel/src/inet.erl
@@ -3449,19 +3449,30 @@ sctp_options() ->
     sctp_status,	   	 sctp_get_peer_addr_info
 ].
 
+merge_base_sctp_options(Opts, Mod, BaseOpts) ->
+    case sctp_opt(Opts, Mod, BaseOpts, sctp_options()) of
+        {ok, SO} ->
+            SO#sctp_opts{opts = lists:reverse(SO#sctp_opts.opts)};
+        {error, _} ->
+            BaseOpts
+    end.
+
 -doc false.
 sctp_options(Opts, Mod)  ->
     %% ?DBG([{opts, Opts}, {mod, Mod}]),
     BaseOpts =
         case application:get_env(kernel, inet_default_sctp_options) of
             {ok, List} when is_list(List) ->
-                #sctp_opts{opts = List};
+                %% ?DBG([{list, List}]),
+                merge_base_sctp_options(List, Mod, #sctp_opts{});
             _ ->
                 #sctp_opts{}
         end,
+    %% ?DBG([{base_opts, BaseOpts}]),
     case sctp_opt(Opts, Mod, BaseOpts, sctp_options()) of
-	{ok, SO} ->
-	    {ok,SO#sctp_opts{opts=lists:reverse(SO#sctp_opts.opts)}};
+	{ok, #sctp_opts{opts = RevOpts} = SO} ->
+            %% ?DBG([{rev_opts, RevOpts}]),
+	    {ok,SO#sctp_opts{opts = lists:reverse(RevOpts)}};
 	Error ->
             %% ?DBG([{error, Error}]),
             Error
-- 
2.43.0

openSUSE Build Service is sponsored by