Skip to content
Snippets Groups Projects
Commit 4d94484e authored by Rider Linden's avatar Rider Linden Committed by Andrey Lihatskiy
Browse files

SL-11430, SL-9756: Take transaction-id from offline messages. Correct LLSD...

SL-11430, SL-9756: Take transaction-id from offline messages.  Correct LLSD names. Use offline flag rather than implicit tests of session_id and aux_id.
parent 07251047
No related branches found
No related tags found
No related merge requests found
......@@ -857,7 +857,7 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
}
else // IM_TASK_INVENTORY_OFFERED
{
if (offline == IM_OFFLINE && session_id.isNull() && aux_id.notNull() && binary_bucket_size > sizeof(S8)* 5)
if (offline)
{
// cap received offline message
std::string str_bucket = ll_safe_string((char*)binary_bucket, binary_bucket_size);
......@@ -889,9 +889,10 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
info->mIM = dialog;
info->mFromID = from_id;
info->mFromGroup = from_group;
info->mTransactionID = session_id;
info->mFolderID = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(info->mType));
info->mTransactionID = session_id.notNull() ? session_id : aux_id;
info->mFromName = name;
info->mDesc = message;
info->mHost = sender;
......@@ -1569,7 +1570,7 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
return;
}
if (gAgent.getRegion() == NULL)
if (!gAgent.getRegion())
{
LL_WARNS("Messaging") << "Region null while attempting to load messages." << LL_ENDL;
return;
......@@ -1577,8 +1578,8 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
LL_INFOS("Messaging") << "Processing offline messages." << LL_ENDL;
std::vector<U8> data;
S32 binary_bucket_size = 0;
// std::vector<U8> data;
// S32 binary_bucket_size = 0;
LLHost sender = gAgent.getRegionHost();
LLSD::array_iterator i = messages.beginArray();
......@@ -1587,38 +1588,46 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url)
{
const LLSD &message_data(*i);
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"] always 0
U32 parent_estate_id = message_data.has("parent_estate_id") ? message_data["parent_estate_id"].asInteger() : 1; // 1 - IMMainland
/* RIDER: Many fields in this message are using a '_' rather than the standard '-'. This
* should be changed but would require tight coordination with the simulator.
*/
LLVector3 position;
if (message_data.has("position"))
{
position.setValue(message_data["position"]);
}
else
{
position.set(message_data["local_x"].asReal(), message_data["local_y"].asReal(), message_data["local_z"].asReal());
}
// Todo: once dirtsim-369 releases, remove one of the int/str options
BOOL from_group;
if (message_data["from_group"].isInteger())
std::vector<U8> bin_bucket;
if (message_data.has("binary_bucket"))
{
from_group = message_data["from_group"].asInteger();
bin_bucket = message_data["binary_bucket"].asBinary();
}
else
{
from_group = message_data["from_group"].asString() == "Y";
bin_bucket.push_back(0);
}
LLIMProcessing::processNewMessage(message_data["from_agent_id"].asUUID(),
from_group,
LLIMProcessing::processNewMessage(
message_data["from_id"].asUUID(),
message_data["from_group"].asBoolean(),
message_data["to_agent_id"].asUUID(),
IM_OFFLINE,
(EInstantMessage)message_data["dialog"].asInteger(),
message_data["session_id"].asUUID(),
message_data["timestamp"].asInteger(),
message_data["from_agent_name"].asString(),
message_data["message"].asString(),
parent_estate_id,
static_cast<U8>(message_data["offline"].asInteger()),
static_cast<EInstantMessage>(message_data["dialog"].asInteger()),
message_data["transaction-id"].asUUID(),
static_cast<U32>(message_data["timestamp"].asInteger()),
message_data["from_name"].asString(),
(message_data.has("message")) ? message_data["message"].asString() : std::string(),
static_cast<U32>((message_data.has("parent_estate_id")) ? message_data["parent_estate_id"].asInteger() : 1), // 1 - IMMainland
message_data["region_id"].asUUID(),
position,
&data[0],
binary_bucket_size,
bin_bucket.data(),
bin_bucket.size(),
sender,
message_data["asset_id"].asUUID()); // not necessarily an asset
message_data["asset_id"].asUUID());
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment