diff options
author | Micael Karlberg <[email protected]> | 2019-06-26 11:38:13 +0200 |
---|---|---|
committer | Micael Karlberg <[email protected]> | 2019-06-26 15:06:16 +0200 |
commit | 649ca6c803fa923e86c0d0b80a61c762793a94a1 (patch) | |
tree | 639badea57e08a7d276e65563527ef05592cdee4 | |
parent | 9fa349df4a052b3516ce12984aada247dd1a17a8 (diff) | |
download | otp-649ca6c803fa923e86c0d0b80a61c762793a94a1.tar.gz otp-649ca6c803fa923e86c0d0b80a61c762793a94a1.tar.bz2 otp-649ca6c803fa923e86c0d0b80a61c762793a94a1.zip |
[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
-rw-r--r-- | erts/emulator/nifs/common/socket_nif.c | 12 |
1 files changed, 8 insertions, 4 deletions
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); |