From fb145f4994fc1cdebe70534c48bcc16acd85ed15 Mon Sep 17 00:00:00 2001
From: andreykproductengine <andreykproductengine@lindenlab.com>
Date: Sat, 24 Mar 2018 14:48:39 +0200
Subject: MAINT-8203 Fixing from_group processing in ReadOfflineMsgs cap

---
 indra/newview/llimprocessing.cpp | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llimprocessing.cpp b/indra/newview/llimprocessing.cpp
index b6943bbfae..c0b9589dcd 100644
--- a/indra/newview/llimprocessing.cpp
+++ b/indra/newview/llimprocessing.cpp
@@ -1440,7 +1440,7 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
 
     if (!status) // success = httpResults["success"].asBoolean();
     {
-        LL_WARNS() << "Error requesting offline messages via capability " << url << ", Status: " << status.toString() << "\nFalling back to legacy method." << LL_ENDL;
+        LL_WARNS("Messaging") << "Error requesting offline messages via capability " << url << ", Status: " << status.toString() << "\nFalling back to legacy method." << LL_ENDL;
 
         requestOfflineMessagesLegacy();
         return;
@@ -1450,10 +1450,11 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
 
     if (!contents.size())
     {
-        LL_WARNS() << "No contents received for offline messages via capability " << url << LL_ENDL;
+        LL_WARNS("Messaging") << "No contents received for offline messages via capability " << url << LL_ENDL;
         return;
     }
 
+    // Todo: once dirtsim-369 releases, remove one of the map/array options
     LLSD messages;
     if (contents.isArray())
     {
@@ -1465,16 +1466,24 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
     }
     else
     {
-        LL_WARNS() << "Invalid offline message content received via capability " << url << LL_ENDL;
+        LL_WARNS("Messaging") << "Invalid offline message content received via capability " << url << LL_ENDL;
         return;
     }
 
     if (!messages.isArray())
     {
-        LL_WARNS() << "Invalid offline message content received via capability " << url << LL_ENDL;
+        LL_WARNS("Messaging") << "Invalid offline message content received via capability " << url << LL_ENDL;
         return;
     }
 
+    if (messages.emptyArray())
+    {
+        // Nothing to process
+        return;
+    }
+
+    LL_INFOS("Messaging") << "Processing offline messages." << LL_ENDL;
+
     std::vector<U8> data;
     S32 binary_bucket_size = 0;
     LLHost sender = gAgent.getRegion()->getHost();
@@ -1487,10 +1496,21 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
         LLVector3 position(message_data["local_x"].asReal(), message_data["local_y"].asReal(), message_data["local_z"].asReal());
         data = message_data["binary_bucket"].asBinary();
         binary_bucket_size = data.size(); // message_data["count"] == data.size() - 1 due to ('\0')
-        U32 parent_estate_id = message_data.has("parent_estate_id") ? message_data["ParentEstateID"].asInteger() : 1; // 1 - IMMainland
+        U32 parent_estate_id = message_data.has("parent_estate_id") ? message_data["parent_estate_id"].asInteger() : 1; // 1 - IMMainland
+
+        // Todo: once dirtsim-369 releases, remove one of the int/str options
+        BOOL from_group;
+        if (message_data["from_group"].isInteger())
+        {
+            from_group = message_data["from_group"].asInteger();
+        }
+        else
+        {
+            from_group = message_data["from_group"].asString() == "Y";
+        }
 
         LLIMProcessing::processNewMessage(message_data["from_agent_id"].asUUID(),
-            message_data["from_group"].asInteger(), // BOOL
+            from_group,
             message_data["to_agent_id"].asUUID(),
             IM_OFFLINE,
             (EInstantMessage)message_data["dialog"].asInteger(),
@@ -1509,6 +1529,8 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
 
 void LLIMProcessing::requestOfflineMessagesLegacy()
 {
+    LL_INFOS("Messaging") << "Requesting offline messages (Legacy)." << LL_ENDL;
+
     LLMessageSystem* msg = gMessageSystem;
     msg->newMessageFast(_PREHASH_RetrieveInstantMessages);
     msg->nextBlockFast(_PREHASH_AgentData);
-- 
cgit v1.2.3