summaryrefslogtreecommitdiff
path: root/erts
diff options
context:
space:
mode:
authorMicael Karlberg <bmk@erlang.org>2020-07-15 13:56:41 +0200
committerMicael Karlberg <bmk@erlang.org>2020-07-15 13:56:41 +0200
commit4c51f0c22217adcdfbbcb0c8e7e32633fd1b9661 (patch)
treef069ff060d2a2fa6fc51077d3e1e2c33853e6e2c /erts
parent796d83d47d417907796322882e5b89aadc56b904 (diff)
downloaderlang-4c51f0c22217adcdfbbcb0c8e7e32633fd1b9661.tar.gz
[kernel|esock] Add env variable ESOCK_USE_SOCKET_REGISTRY
Make it possible to set global default value using environment variable (ESOCK_USE_SOCKET_REGISTRY). OTP-16763
Diffstat (limited to 'erts')
-rw-r--r--erts/emulator/nifs/common/prim_socket_nif.c2
-rw-r--r--erts/preloaded/ebin/prim_socket.beambin30712 -> 31272 bytes
-rw-r--r--erts/preloaded/src/prim_socket.erl41
3 files changed, 35 insertions, 8 deletions
diff --git a/erts/emulator/nifs/common/prim_socket_nif.c b/erts/emulator/nifs/common/prim_socket_nif.c
index 6393967ea7..663ae81a7c 100644
--- a/erts/emulator/nifs/common/prim_socket_nif.c
+++ b/erts/emulator/nifs/common/prim_socket_nif.c
@@ -19911,7 +19911,7 @@ ESockDescriptor* alloc_descriptor(SOCKET sock, HANDLE event)
descP->rCtrlSz = ESOCK_RECV_CTRL_BUFFER_SIZE_DEFAULT;
descP->wCtrlSz = ESOCK_SEND_CTRL_BUFFER_SIZE_DEFAULT;
descP->iow = FALSE;
- descP->dbg = ESOCK_DEBUG_DEFAULT; // Overwritten by caller
+ descP->dbg = ESOCK_DEBUG_DEFAULT; // Overwritten by caller
descP->useReg = ESOCK_USE_SOCKET_REGISTRY; // Overwritten by caller
descP->meta.env = esock_alloc_env("alloc_descriptor - "
"meta-env");
diff --git a/erts/preloaded/ebin/prim_socket.beam b/erts/preloaded/ebin/prim_socket.beam
index 1e6c034e67..c42f68512a 100644
--- a/erts/preloaded/ebin/prim_socket.beam
+++ b/erts/preloaded/ebin/prim_socket.beam
Binary files differ
diff --git a/erts/preloaded/src/prim_socket.erl b/erts/preloaded/src/prim_socket.erl
index fbb7e2f3c3..efa99cc989 100644
--- a/erts/preloaded/src/prim_socket.erl
+++ b/erts/preloaded/src/prim_socket.erl
@@ -67,6 +67,7 @@
(#{port => 0, addr => any,
flowinfo => 0, scope_id => 0})).
+
%% ===========================================================================
%%
%% Constants common to prim_socket_nif.c - has to be "identical"
@@ -347,6 +348,7 @@
) band (bnot 16#FFFF)
) =:= 0)).
+
%% ===========================================================================
%% API for 'erl_init'
%%
@@ -370,16 +372,39 @@ on_load(Extra) when is_map(Extra) ->
atom_to_list(?MODULE),
case DebugFilename of
false ->
- Extra#{registry => Pid};
+ case os:get_env_var("ESOCK_USE_SOCKET_REGISTRY") of
+ "true" ->
+ Extra#{registry => Pid,
+ use_registry => true};
+ "false" ->
+ Extra#{registry => Pid,
+ use_registry => false};
+ _ ->
+ Extra#{registry => Pid}
+ end;
_ ->
- Extra
- #{registry => Pid,
- debug => true,
- socket_debug => true,
- debug_filename =>
- encode_path(DebugFilename)}
+ case os:get_env_var("ESOCK_USE_SOCKET_REGISTRY") of
+ "true" ->
+ Extra#{registry => Pid,
+ use_registry => true,
+ debug => true,
+ socket_debug => true,
+ debug_filename => encode_path(DebugFilename)};
+ "false" ->
+ Extra#{registry => Pid,
+ use_registry => false,
+ debug => true,
+ socket_debug => true,
+ debug_filename => encode_path(DebugFilename)};
+ _ ->
+ Extra#{registry => Pid,
+ debug => true,
+ socket_debug => true,
+ debug_filename => encode_path(DebugFilename)}
+ end
end).
+
%% ===========================================================================
%% API for 'socket'
%%
@@ -394,6 +419,7 @@ encode_path(Path) ->
encode_sockaddr(SockAddr) ->
enc_sockaddr(SockAddr).
+
%% ----------------------------------
info() ->
@@ -1302,6 +1328,7 @@ invalid(What, Info) ->
err(Reason) ->
erlang:error(Reason).
+
%% ===========================================================================
%% NIF functions
%%