From 63789ec81859120ddac23097466b62d89f88abf7 Mon Sep 17 00:00:00 2001 From: Pmaxsd Date: Fri, 26 Jun 2026 08:18:13 +0200 Subject: [PATCH 1/2] fix session stats reset on changed pool settings --- main/stratum/stratum_manager.cpp | 3 +++ main/stratum/stratum_manager.h | 4 ++++ main/stratum/stratum_manager_dual_pool.h | 16 ++++++++++------ main/stratum/stratum_manager_fallback.h | 13 +++++++++---- main/system.cpp | 2 +- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/main/stratum/stratum_manager.cpp b/main/stratum/stratum_manager.cpp index 9ea0406f1..6f1784eac 100644 --- a/main/stratum/stratum_manager.cpp +++ b/main/stratum/stratum_manager.cpp @@ -302,6 +302,9 @@ void StratumManager::loadSettings(bool reconnect) m_stratumTasks[i]->triggerReconnect(); } + // reset session stats for this pool + resetPoolSessionStats(i); + // reset ping stats if (m_pingTasks[i]) { m_pingTasks[i]->reset(); diff --git a/main/stratum/stratum_manager.h b/main/stratum/stratum_manager.h index b5f526423..0d6a9050c 100644 --- a/main/stratum/stratum_manager.h +++ b/main/stratum/stratum_manager.h @@ -98,6 +98,10 @@ class StratumManager { virtual int getPoolMode() = 0; + // reset stats for a single pool (called from loadSettings with mutex held) + virtual void resetPoolSessionStats(int pool) { + } + public: virtual void resetSessionStats() { PThreadGuard lock(m_mutex); diff --git a/main/stratum/stratum_manager_dual_pool.h b/main/stratum/stratum_manager_dual_pool.h index 44cf56bd3..4492def5b 100644 --- a/main/stratum/stratum_manager_dual_pool.h +++ b/main/stratum/stratum_manager_dual_pool.h @@ -97,15 +97,19 @@ class StratumManagerDualPool : public StratumManager { return (m_balance >= 50) ? m_networkDifficulty[0] : m_networkDifficulty[1]; } + virtual void resetPoolSessionStats(int pool) override { + StratumManager::resetPoolSessionStats(pool); + m_accepted[pool] = 0; + m_rejected[pool] = 0; + m_bestSessionDiff[pool] = 0; + suffixString(std::max(m_bestSessionDiff[0], m_bestSessionDiff[1]), m_bestSessionDiffString, DIFF_STRING_SIZE, 0); + if (m_stratumTasks[pool]) m_stratumTasks[pool]->m_poolErrors = 0; + } + virtual void resetSessionStats() override { PThreadGuard lock(m_mutex); - m_foundBlocks = 0; for (int i = 0; i < 2; i++) { - m_accepted[i] = 0; - m_rejected[i] = 0; - m_bestSessionDiff[i] = 0; - suffixString(0, m_bestSessionDiffString, DIFF_STRING_SIZE, 0); - if (m_stratumTasks[i]) m_stratumTasks[i]->m_poolErrors = 0; + resetPoolSessionStats(i); } } diff --git a/main/stratum/stratum_manager_fallback.h b/main/stratum/stratum_manager_fallback.h index 9c702ad72..b298a9eb8 100644 --- a/main/stratum/stratum_manager_fallback.h +++ b/main/stratum/stratum_manager_fallback.h @@ -80,15 +80,20 @@ class StratumManagerFallback : public StratumManager { return m_networkDifficulty; } - virtual void resetSessionStats() override { - PThreadGuard lock(m_mutex); - m_foundBlocks = 0; + virtual void resetPoolSessionStats(int pool) override { + StratumManager::resetPoolSessionStats(pool); + // fallback mode shares a single counter for both pools m_accepted = 0; m_rejected = 0; m_bestSessionDiff = 0; suffixString(0, m_bestSessionDiffString, DIFF_STRING_SIZE, 0); + if (m_stratumTasks[pool]) m_stratumTasks[pool]->m_poolErrors = 0; + } + + virtual void resetSessionStats() override { + PThreadGuard lock(m_mutex); for (int i = 0; i < 2; i++) { - if (m_stratumTasks[i]) m_stratumTasks[i]->m_poolErrors = 0; + resetPoolSessionStats(i); } } diff --git a/main/system.cpp b/main/system.cpp index 39be1cb12..6ac75b190 100644 --- a/main/system.cpp +++ b/main/system.cpp @@ -290,7 +290,7 @@ void System::task() { uint32_t foundBlocks = STRATUM_MANAGER->getFoundBlocks(); // trigger the overlay only once when block is found - if (foundBlocks != lastFoundBlocks && foundBlocks) { + if (foundBlocks > lastFoundBlocks) { m_display->showFoundBlockOverlay(); } lastFoundBlocks = foundBlocks; From 9b04d4e9e009ccbc5d4254e97a1098e658aad491 Mon Sep 17 00:00:00 2001 From: Pmaxsd Date: Thu, 9 Jul 2026 20:10:02 +0200 Subject: [PATCH 2/2] removed unused ternary condition, it might have done weird things --- main/http_server/handler_system.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/main/http_server/handler_system.cpp b/main/http_server/handler_system.cpp index 036929ec0..43ac9c0e8 100644 --- a/main/http_server/handler_system.cpp +++ b/main/http_server/handler_system.cpp @@ -92,6 +92,10 @@ esp_err_t GET_system_info(httpd_req_t *req) char *fallbackStratumURL = Config::getStratumFallbackURL(); char *fallbackStratumUser= Config::getStratumFallbackUser(); + char *sv2_auth = Config::getSV2AuthorityPubkey(); + char *fb_sv2_auth = Config::getFallbackSV2AuthorityPubkey(); + + // static doc["asicCount"] = board->getAsicCount(); doc["smallCoreCount"] = (board->getAsics()) ? board->getAsics()->getSmallCoreCount() : 0; @@ -210,14 +214,8 @@ esp_err_t GET_system_info(httpd_req_t *req) doc["fallbackStratumTLS"] = Config::isStratumFallbackTLS(); doc["stratumProtocol"] = Config::getStratumProtocol(); doc["fallbackStratumProtocol"] = Config::getFallbackStratumProtocol(); - { - char *sv2_auth = Config::getSV2AuthorityPubkey(); - doc["sv2AuthorityPubkey"] = sv2_auth ? sv2_auth : ""; - safe_free(sv2_auth); - char *fb_sv2_auth = Config::getFallbackSV2AuthorityPubkey(); - doc["fallbackSv2AuthorityPubkey"] = fb_sv2_auth ? fb_sv2_auth : ""; - safe_free(fb_sv2_auth); - } + doc["sv2AuthorityPubkey"] = sv2_auth; + doc["fallbackSv2AuthorityPubkey"] = fb_sv2_auth; doc["sv2ChannelType"] = Config::getSV2ChannelType(); doc["fallbackSv2ChannelType"] = Config::getFallbackSV2ChannelType(); doc["voltage"] = POWER_MANAGEMENT_MODULE.getVoltage(); @@ -264,6 +262,9 @@ esp_err_t GET_system_info(httpd_req_t *req) free(fallbackStratumURL); free(fallbackStratumUser); + free(sv2_auth); + free(fb_sv2_auth); + return ret; }