summaryrefslogtreecommitdiff
path: root/erts/emulator/nifs
diff options
context:
space:
mode:
authorRaimo Niskanen <raimo@erlang.org>2020-07-31 17:16:10 +0200
committerRaimo Niskanen <raimo@erlang.org>2020-08-19 15:08:18 +0200
commit6ce43245dcf7e89e1ca084cd9207799a73e46e09 (patch)
treed651a89c5b7221364ea4d38e0c51d1fcc84b8508 /erts/emulator/nifs
parentbd136cd21b0f43d7577b308b013b664b95ad4147 (diff)
downloaderlang-6ce43245dcf7e89e1ca084cd9207799a73e46e09.tar.gz
Fix type spec and doc for msghdr
Diffstat (limited to 'erts/emulator/nifs')
-rw-r--r--erts/emulator/nifs/common/prim_socket_nif.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/erts/emulator/nifs/common/prim_socket_nif.c b/erts/emulator/nifs/common/prim_socket_nif.c
index cb9244e2c8..25f8886fe1 100644
--- a/erts/emulator/nifs/common/prim_socket_nif.c
+++ b/erts/emulator/nifs/common/prim_socket_nif.c
@@ -13017,30 +13017,28 @@ void encode_msghdr(ErlNifEnv* env,
"\r\n", descP->sock, addr, ctrl, flags) );
{
- ERL_NIF_TERM keys[] = {esock_atom_addr,
- esock_atom_iov,
+ ERL_NIF_TERM keys[] = {esock_atom_iov,
esock_atom_ctrl,
- esock_atom_flags};
- ERL_NIF_TERM vals[] = {addr, iov, ctrl, flags};
- unsigned int numKeys = NUM(keys);
- unsigned int numVals = NUM(vals);
- ERL_NIF_TERM tmp;
+ esock_atom_flags,
+ esock_atom_addr};
+ ERL_NIF_TERM vals[] = {iov, ctrl, flags, addr};
+ size_t numKeys = NUM(keys);
- ESOCK_ASSERT( numKeys == numVals );
+ ESOCK_ASSERT( numKeys == NUM(vals) );
SSDBG( descP,
("SOCKET",
"encode_msghdr {%d} -> create msghdr map\r\n",
descP->sock) );
- ESOCK_ASSERT( MKMA(env, keys, vals, numKeys, &tmp) );
+ if (msgHdrP->msg_namelen == 0)
+ numKeys--; // No addr
+ ESOCK_ASSERT( MKMA(env, keys, vals, numKeys, eSockAddr) );
SSDBG( descP,
("SOCKET",
"encode_msghdr {%d}-> msghdr encoded\r\n",
descP->sock) );
-
- *eSockAddr = tmp;
}
SSDBG( descP,