From 03c13540cb38d2e0ada6bf62ad2d4666487fa090 Mon Sep 17 00:00:00 2001 From: Darl Date: Thu, 2 Apr 2026 10:23:50 -0500 Subject: Treat emptymutelist dispatch from the simulator as authoritative when in a cache fallback status. This yields to the simulator's responsibility as source-of-truth. e.g. Bob has Alice blocked for a while across all his devices 1. Bob unblocked Alice on his laptop 2. Bob logs in on his desktop with a cached mutelist 3. LLDispatchEmptyMuteList fires 4. LLMuteList becomes eventually-correct, reflecting most recent signaled user intent Signed-off-by: Darl --- indra/newview/llmutelist.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'indra/newview/llmutelist.cpp') diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index d9e674a423..154e826196 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -92,7 +92,9 @@ public: const LLUUID& invoice, const sparam_t& strings) { - LLMuteList::getInstance()->setLoaded(LLMuteList::MLS_SERVER_EMPTY); + LLMuteList* mute_list = LLMuteList::getInstance(); + mute_list->clearCachedMutes(); + mute_list->setLoaded(LLMuteList::MLS_SERVER_EMPTY); return true; } }; @@ -231,6 +233,12 @@ bool LLMuteList::getLoadFailed() return false; } +void LLMuteList::clearCachedMutes() +{ + mMutes.clear(); + mLegacyMutes.clear(); +} + const char* LLMuteList::sourceToString(EMuteListSource source) { switch (source) @@ -668,8 +676,7 @@ bool LLMuteList::loadFromFile(const std::string& filename, EMuteListSource sourc } // Replace previous server-backed state so fallback can be superseded by authoritative data. - mMutes.clear(); - mLegacyMutes.clear(); + clearCachedMutes(); // *NOTE: Changing the size of these buffers will require changes // in the scanf below. -- cgit v1.3