File 2070-kernel-esock-The-Fd-variable-is-used-for-other-stuff.patch of Package erlang

From e947070b4b970e457c8eb2aa4f5793e6325e14c6 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Tue, 7 Jul 2020 10:58:11 +0200
Subject: [PATCH 10/10] [kernel|esock] The Fd variable is used for other stuff

The Fd is not only used (as file descriptor) but is
also used for [{netns,NS}] (by inet:connect_options/2).

OTP-16754
---
 lib/kernel/src/gen_tcp_socket.erl | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/lib/kernel/src/gen_tcp_socket.erl b/lib/kernel/src/gen_tcp_socket.erl
index bae2bb7d35..4c832be12e 100644
--- a/lib/kernel/src/gen_tcp_socket.erl
+++ b/lib/kernel/src/gen_tcp_socket.erl
@@ -138,8 +138,12 @@ connect_open(Addrs, Domain, ConnectOpts, Opts, Fd, Timer, BindAddr) ->
     %%
     ExtraOpts =
         if
-            Fd =:= -1 -> [];
-            is_integer(Fd) -> [{fd, Fd}]
+            Fd =:= -1      -> [];
+            is_integer(Fd) -> [{fd, Fd}];
+            %% This is an **ugly** hack.
+            %% inet:connect_options/2 has the bad taste to use this
+            %% for [{netns,NS}] if that option is used...
+            is_list(Fd)    -> Fd
         end,
     {SocketOpts, StartOpts} = setopts_split(socket, Opts),
     case
@@ -229,8 +233,12 @@ listen_open(Domain, ListenOpts, Opts, Fd, Backlog, BindAddr) ->
     %% ?DBG({Domain, ListenOpts, Opts, Fd, Backlog, BindAddr}),
     ExtraOpts =
         if
-            Fd =:= -1 -> [];
-            is_integer(Fd) -> [{fd, Fd}]
+            Fd =:= -1      -> [];
+            is_integer(Fd) -> [{fd, Fd}];
+            %% This is an **ugly** hack.
+            %% inet:connect_options/2 has the bad taste to use this
+            %% for [{netns,NS}] if that option is used...
+            is_list(Fd)    -> Fd
         end,
     {SocketOpts, StartOpts} = setopts_split(socket, Opts),
     case
-- 
2.26.2

openSUSE Build Service is sponsored by