From ea8699e03fee04465d285bbea97000a00c7f91ed Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Tue, 18 Mar 2025 21:41:39 -0400 Subject: [PATCH] add some guard rails around when batch operations add/remove; --- src/tged/TGListWnd.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/tged/TGListWnd.h b/src/tged/TGListWnd.h index de1b2465..42ec8184 100644 --- a/src/tged/TGListWnd.h +++ b/src/tged/TGListWnd.h @@ -170,6 +170,10 @@ public: auto config = rule.config(); + if (!config.active()) { + continue; // don't update rules that aren't active + } + std::vector inclusions = config.inclusion(); auto it = std::find_if(inclusions.begin(), inclusions.end(), [&](uint32_t x) { return x == wnd.peerId; }); if (it == inclusions.end()) { @@ -205,6 +209,10 @@ public: auto config = rule.config(); + if (!config.active()) { + continue; // don't update rules that aren't active + } + std::vector inclusions = config.inclusion(); auto it = std::find_if(inclusions.begin(), inclusions.end(), [&](uint32_t x) { return x == wnd.peerId; }); if (it != inclusions.end()) { @@ -240,6 +248,14 @@ public: auto config = rule.config(); + if (!config.active()) { + continue; // don't update rules that aren't active + } + + if (!config.affiliated()) { + continue; // don't add peers to always lists for those not marked affiliated + } + std::vector alwaysSend = config.alwaysSend(); auto it = std::find_if(alwaysSend.begin(), alwaysSend.end(), [&](uint32_t x) { return x == wnd.peerId; }); if (it == alwaysSend.end()) { @@ -275,6 +291,14 @@ public: auto config = rule.config(); + if (!config.active()) { + continue; // don't update rules that aren't active + } + + if (!config.affiliated()) { + continue; // don't remove peers from always lists for those not marked affiliated + } + std::vector alwaysSend = config.alwaysSend(); auto it = std::find_if(alwaysSend.begin(), alwaysSend.end(), [&](uint32_t x) { return x == wnd.peerId; }); if (it != alwaysSend.end()) {