File 7061-esock-Accept-binaries-for-string-socket-options.patch of Package erlang
From a32d3f1ea245923f2d33f980e1a944f3832be618 Mon Sep 17 00:00:00 2001
From: Nikolay Amiantov <ab@fmap.me>
Date: Fri, 25 Nov 2022 11:53:55 +0700
Subject: [PATCH 1/2] [esock] Accept binaries for string socket options
---
erts/emulator/nifs/common/prim_socket_nif.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/erts/emulator/nifs/common/prim_socket_nif.c b/erts/emulator/nifs/common/prim_socket_nif.c
index b80f7bea5f..d27e7b96d6 100644
--- a/erts/emulator/nifs/common/prim_socket_nif.c
+++ b/erts/emulator/nifs/common/prim_socket_nif.c
@@ -8132,12 +8132,21 @@ ERL_NIF_TERM esock_setopt_str_opt(ErlNifEnv* env,
ERL_NIF_TERM result;
int optLen;
char* val = MALLOC(max);
+ ErlNifBinary bin;
ESOCK_ASSERT( val != NULL );
if ((optLen = GET_STR(env, eVal, val, max)) > 0) {
optLen--;
+ result =
+ esock_setopt_level_opt(env, descP, level, opt,
+ val, optLen);
+ } else if (enif_inspect_binary(env, eVal, &bin)) {
+ optLen = esock_strnlen(bin.data, max - 1);
+ sys_memcpy(val, bin.data, optLen);
+ val[optLen] = '\0';
+
result =
esock_setopt_level_opt(env, descP, level, opt,
val, optLen);
--
2.35.3