aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/nifs
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2018-10-18 17:18:10 +0200
committerMicael Karlberg <[email protected]>2018-10-18 17:18:10 +0200
commit3eb4d5160f6a9f7cca799c97daf33b1a8b154f5d (patch)
tree03673b22e927b7b1cb9677dafeb9fad190ebc8c3 /erts/emulator/nifs
parent598ecec8b59509f223807d36e9dd1244d7d80fa2 (diff)
downloadotp-3eb4d5160f6a9f7cca799c97daf33b1a8b154f5d.tar.gz
otp-3eb4d5160f6a9f7cca799c97daf33b1a8b154f5d.tar.bz2
otp-3eb4d5160f6a9f7cca799c97daf33b1a8b154f5d.zip
[socket-nif] Initiation of "current reader" missing for recvmsg
When calling the recvmsg function when there is no data, we should be wait (for the specified amount of time). But this not not wotk because the "current reader" structure was not initiated. OTP-14831
Diffstat (limited to 'erts/emulator/nifs')
-rw-r--r--erts/emulator/nifs/common/socket_nif.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/erts/emulator/nifs/common/socket_nif.c b/erts/emulator/nifs/common/socket_nif.c
index 5d2cfbc10b..2eddcb5658 100644
--- a/erts/emulator/nifs/common/socket_nif.c
+++ b/erts/emulator/nifs/common/socket_nif.c
@@ -12334,9 +12334,13 @@ ERL_NIF_TERM recvmsg_check_result(ErlNifEnv* env,
} else if ((saveErrno == ERRNO_BLOCK) ||
(saveErrno == EAGAIN)) {
+ char* xres;
SSDBG( descP, ("SOCKET", "recvmsg_check_result -> eagain\r\n") );
+ if ((xres = recv_init_current_reader(env, descP, recvRef)) != NULL)
+ return esock_make_error_str(env, xres);
+
SELECT(env, descP->sock, (ERL_NIF_SELECT_READ),
descP, NULL, recvRef);