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