From 649ca6c803fa923e86c0d0b80a61c762793a94a1 Mon Sep 17 00:00:00 2001 From: Micael Karlberg Date: Wed, 26 Jun 2019 11:38:13 +0200 Subject: [esock] Corrected some counter actions When to count read failure and read package count used number of bytes read instead of just increment (by 1). OTP-1581 --- erts/emulator/nifs/common/socket_nif.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'erts') diff --git a/erts/emulator/nifs/common/socket_nif.c b/erts/emulator/nifs/common/socket_nif.c index 83fb4bcf7f..8e679ec6ae 100644 --- a/erts/emulator/nifs/common/socket_nif.c +++ b/erts/emulator/nifs/common/socket_nif.c @@ -15211,9 +15211,6 @@ ERL_NIF_TERM recv_check_fail(ErlNifEnv* env, { ERL_NIF_TERM res; - // cnt_inc(&descP->readFails, 1); - SOCK_CNT_INC(env, descP, sockRef, atom_read_fails, &descP->readFails, 1); - FREE_BIN(buf1P); if (buf2P != NULL) FREE_BIN(buf2P); if (saveErrno == ECONNRESET) { @@ -15222,6 +15219,10 @@ ERL_NIF_TERM recv_check_fail(ErlNifEnv* env, SSDBG( descP, ("SOCKET", "recv_check_fail -> closed\r\n") ); + // 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); + res = recv_check_fail_closed(env, descP, sockRef, recvRef); } else if ((saveErrno == ERRNO_BLOCK) || @@ -15236,6 +15237,9 @@ ERL_NIF_TERM recv_check_fail(ErlNifEnv* env, SSDBG( descP, ("SOCKET", "recv_check_fail -> errno: %d\r\n", saveErrno) ); + // cnt_inc(&descP->readFails, 1); + SOCK_CNT_INC(env, descP, sockRef, atom_read_fails, &descP->readFails, 1); + res = recv_check_fail_gen(env, descP, saveErrno, sockRef); } @@ -15400,7 +15404,7 @@ ERL_NIF_TERM recv_check_partial_done(ErlNifEnv* env, descP->rNumCnt = 0; // cnt_inc(&descP->readPkgCnt, 1); - SOCK_CNT_INC(env, descP, sockRef, atom_read_pkg, &descP->readPkgCnt, read); + SOCK_CNT_INC(env, descP, sockRef, atom_read_pkg, &descP->readPkgCnt, 1); // cnt_inc(&descP->readByteCnt, read); SOCK_CNT_INC(env, descP, sockRef, atom_read_byte, &descP->readByteCnt, read); -- cgit v1.2.3