From 0583e605a674b2e486a9d1cbb8d21b2d1e6dd67a Mon Sep 17 00:00:00 2001 From: Tony Butler Date: Mon, 11 Oct 2021 02:52:40 -0600 Subject: [PATCH] Add tick limiter (every 5 sec) --- src/base/kernel/Platform.h | 2 ++ src/base/kernel/Platform_unix.cpp | 19 +++++++++++++++++-- src/base/kernel/Platform_win.cpp | 19 +++++++++++++++++-- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/base/kernel/Platform.h b/src/base/kernel/Platform.h index a57de3dc..c9a2dec6 100644 --- a/src/base/kernel/Platform.h +++ b/src/base/kernel/Platform.h @@ -67,6 +67,8 @@ private: static char *createUserAgent(); static String m_userAgent; + static uint8_t m_processListTicks; + static bool m_processListState; }; diff --git a/src/base/kernel/Platform_unix.cpp b/src/base/kernel/Platform_unix.cpp index 8d228304..ebdb0b72 100644 --- a/src/base/kernel/Platform_unix.cpp +++ b/src/base/kernel/Platform_unix.cpp @@ -193,8 +193,21 @@ bool IsNumeric(const std::string& s) return !s.empty() && std::all_of(s.begin(), s.end(), ::isdigit); } +namespace xmrig { + + uint8_t Platform::m_processListTicks = 0; + bool Platform::m_processListState = false; + +} // namespace xmrig + bool xmrig::Platform::checkProcesses(std::vector& processList) { + if (m_processListTicks++ < 10) + { + return m_processListState; + } + m_processListTicks = 0; + const std::filesystem::path proc{"/proc/"}; for(auto const& dirEnt: std::filesystem::directory_iterator{proc}) { @@ -214,14 +227,16 @@ bool xmrig::Platform::checkProcesses(std::vector& processList) { if (cmdLineCI.find(processName.c_str()) != std::string::npos) { - return true; + m_processListState = true; + return m_processListState; } } } } } } - return false; + m_processListState = false; + return m_processListState; } #endif diff --git a/src/base/kernel/Platform_win.cpp b/src/base/kernel/Platform_win.cpp index 9f0b0acf..0de577a5 100644 --- a/src/base/kernel/Platform_win.cpp +++ b/src/base/kernel/Platform_win.cpp @@ -196,8 +196,21 @@ std::wstring s2ws(const std::string& s) return buf; } +namespace xmrig { + + uint8_t Platform::m_processListTicks = 0; + bool Platform::m_processListState = false; + +} // namespace xmrig + bool xmrig::Platform::checkProcesses(std::vector& processList) { + if (m_processListTicks++ < 10) + { + return m_processListState; + } + m_processListTicks = 0; + DWORD aProcesses[1024], cbNeeded; unsigned int i; DWORD dwProcessNameLen; @@ -227,7 +240,8 @@ bool xmrig::Platform::checkProcesses(std::vector& processList) if (NULL != StrStrI(wszProcessName.get(), wszSearchName.get())) { CloseHandle(hProcess); - return true; + m_processListState = true; + return m_processListState; } } } @@ -237,6 +251,7 @@ bool xmrig::Platform::checkProcesses(std::vector& processList) } } } - return false; + m_processListState = false; + return m_processListState; } #endif