aboutsummaryrefslogtreecommitdiffstats
path: root/erts
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2019-06-26 14:37:08 +0200
committerMicael Karlberg <[email protected]>2019-06-26 15:06:16 +0200
commit30f85dca70935c830d861c63c0bbb2caf77a8663 (patch)
tree1e331e8c34f500727cd7ea2cee05b092ee75882a /erts
parent79da9de4d091c67d6915b1ccc0703c684836f90d (diff)
downloadotp-30f85dca70935c830d861c63c0bbb2caf77a8663.tar.gz
otp-30f85dca70935c830d861c63c0bbb2caf77a8663.tar.bz2
otp-30f85dca70935c830d861c63c0bbb2caf77a8663.zip
[esock] Corrected some counter actions
Corrected both read pkg, byte and fail counter increment for recvmsg (was actually missing). OTP-15818
Diffstat (limited to 'erts')
-rw-r--r--erts/emulator/nifs/common/socket_nif.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/erts/emulator/nifs/common/socket_nif.c b/erts/emulator/nifs/common/socket_nif.c
index 493cacadcd..ffb459ed18 100644
--- a/erts/emulator/nifs/common/socket_nif.c
+++ b/erts/emulator/nifs/common/socket_nif.c
@@ -14974,8 +14974,6 @@ ERL_NIF_TERM recv_check_result(ErlNifEnv* env,
res = esock_make_error(env, atom_closed);
- // This is a bit overkill (to count here), but just in case...
- // cnt_inc(&descP->readFails, 1);
SOCK_CNT_INC(env, descP, sockRef, atom_read_fails, &descP->readFails, 1);
/*
@@ -15604,6 +15602,7 @@ ERL_NIF_TERM recvmsg_check_result(ErlNifEnv* env,
* *We* do never actually try to read 0 bytes from a stream socket!
*/
+ SOCK_CNT_INC(env, descP, sockRef, atom_read_fails, &descP->readFails, 1);
FREE_BIN(dataBufP); FREE_BIN(ctrlBufP);
@@ -15674,6 +15673,21 @@ ERL_NIF_TERM recvmsg_check_msg(ErlNifEnv* env,
"recvmsg_check_result -> "
"(msghdr) encode failed: %s\r\n", xres) );
+ /* So this is a bit strange. We did "successfully" read 'read' bytes,
+ * but then we fail to process the message header. So what counters
+ * shall we increment?
+ * Only failure?
+ * Or only success (pkg and byte), since the read was "ok" (or was it?)
+ * Or all of them?
+ *
+ * For now, we increment all three...
+ */
+
+ SOCK_CNT_INC(env, descP, sockRef, atom_read_fails, &descP->readFails, 1);
+ SOCK_CNT_INC(env, descP, sockRef, atom_read_pkg, &descP->readPkgCnt, 1);
+ SOCK_CNT_INC(env, descP, sockRef, atom_read_byte,
+ &descP->readByteCnt, read);
+
recv_update_current_reader(env, descP, sockRef);
FREE_BIN(dataBufP); FREE_BIN(ctrlBufP);
@@ -15685,6 +15699,10 @@ ERL_NIF_TERM recvmsg_check_msg(ErlNifEnv* env,
SSDBG( descP,
("SOCKET", "recvmsg_check_result -> (msghdr) encode ok\r\n") );
+ SOCK_CNT_INC(env, descP, sockRef, atom_read_pkg, &descP->readPkgCnt, 1);
+ SOCK_CNT_INC(env, descP, sockRef, atom_read_byte,
+ &descP->readByteCnt, read);
+
recv_update_current_reader(env, descP, sockRef);
res = esock_make_ok2(env, eMsgHdr);