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
e2dd15397c
commit
c8b7466c19
|
|
@ -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
|
||||
|
||||
// Todo: once dirtsim-369 releases, remove one of the int/str options
|
||||
BOOL from_group;
|
||||
if (message_data["from_group"].isInteger())
|
||||
/* 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"))
|
||||
{
|
||||
from_group = message_data["from_group"].asInteger();
|
||||
position.setValue(message_data["position"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
from_group = message_data["from_group"].asString() == "Y";
|
||||
position.set(message_data["local_x"].asReal(), message_data["local_y"].asReal(), message_data["local_z"].asReal());
|
||||
}
|
||||
|
||||
LLIMProcessing::processNewMessage(message_data["from_agent_id"].asUUID(),
|
||||
from_group,
|
||||
std::vector<U8> bin_bucket;
|
||||
if (message_data.has("binary_bucket"))
|
||||
{
|
||||
bin_bucket = message_data["binary_bucket"].asBinary();
|
||||
}
|
||||
else
|
||||
{
|
||||
bin_bucket.push_back(0);
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue