From 74a6f7382acb92bb3cc37c769c00d9f023588fda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Liru=20F=C3=A6rs?= Date: Sat, 29 Feb 2020 05:51:07 -0500 Subject: [PATCH] When possible, populate the owner id of our llviewerobjects --- indra/newview/jcfloaterareasearch.cpp | 1 + indra/newview/llimprocessing.cpp | 4 ++++ indra/newview/llselectmgr.cpp | 1 + indra/newview/llviewermessage.cpp | 16 ++++++++++++---- indra/newview/llviewerobject.cpp | 1 + 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/indra/newview/jcfloaterareasearch.cpp b/indra/newview/jcfloaterareasearch.cpp index 609b8f509..ae970ebc3 100644 --- a/indra/newview/jcfloaterareasearch.cpp +++ b/indra/newview/jcfloaterareasearch.cpp @@ -299,6 +299,7 @@ void JCFloaterAreaSearch::processObjectPropertiesFamily(LLMessageSystem* msg, vo // We cache unknown objects (to avoid having to request them later) // and requested objects. msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_OwnerID, data->owner_id); + if (auto obj = gObjectList.findObject(object_id)) obj->mOwnerID = data->owner_id; // Singu Note: Try to get Owner whenever possible msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_GroupID, data->group_id); msg->getStringFast(_PREHASH_ObjectData, _PREHASH_Name, data->name); msg->getStringFast(_PREHASH_ObjectData, _PREHASH_Description, data->desc); diff --git a/indra/newview/llimprocessing.cpp b/indra/newview/llimprocessing.cpp index af083f75f..8af9d7d2a 100644 --- a/indra/newview/llimprocessing.cpp +++ b/indra/newview/llimprocessing.cpp @@ -566,6 +566,10 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, // object IMs contain sender object id in session_id (STORM-1209) || (chat.mSourceType == CHAT_SOURCE_OBJECT && LLMuteList::getInstance()->isMuted(session_id)); + // Singu Note: Try to get Owner whenever possible, here owner is the from id + if (chat.mSourceType == CHAT_SOURCE_OBJECT && session_id.notNull()) + if (auto obj = gObjectList.findObject(session_id)) obj->mOwnerID = from_id; + bool is_linden = chat.mSourceType != CHAT_SOURCE_OBJECT && LLMuteList::getInstance()->isLinden(name); chat.mMuted = is_muted && !is_linden; diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index df8e183b1..371d4c68c 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -5446,6 +5446,7 @@ void LLSelectMgr::processObjectProperties(LLMessageSystem* msg, void** user_data node->mInventorySerial = inv_serial; node->mSitName.assign(sit_name); node->mTouchName.assign(touch_name); + if (auto obj = node->getObject()) obj->mOwnerID = owner_id; // Singu Note: Try to get Owner whenever possible } } diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index f0386bc53..a96026652 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2241,6 +2241,8 @@ void process_chat_from_simulator(LLMessageSystem* msg, void** user_data) // Object owner for objects msg->getUUID("ChatData", "OwnerID", owner_id); + bool has_owner = owner_id.notNull(); + if (chatter && has_owner) chatter->mOwnerID = owner_id; // Singu Note: Try to get Owner whenever possible msg->getU8Fast(_PREHASH_ChatData, _PREHASH_SourceType, source_temp); chat.mSourceType = (EChatSourceType)source_temp; @@ -2251,8 +2253,8 @@ void process_chat_from_simulator(LLMessageSystem* msg, void** user_data) // NaCL - Antispam Registry auto antispam = NACLAntiSpamRegistry::getIfExists(); if (antispam && chat.mChatType != CHAT_TYPE_START && chat.mChatType != CHAT_TYPE_STOP //Chat type isn't typing - && (antispam->checkQueue(NACLAntiSpamRegistry::QUEUE_CHAT, from_id, owner_id.isNull() ? LFIDBearer::AVATAR : LFIDBearer::OBJECT) // Spam from an object or avatar? - || (owner_id.notNull() && (antispam->checkQueue(NACLAntiSpamRegistry::QUEUE_CHAT, owner_id))))) // Spam from a resident? + && (antispam->checkQueue(NACLAntiSpamRegistry::QUEUE_CHAT, from_id, !has_owner ? LFIDBearer::AVATAR : LFIDBearer::OBJECT) // Spam from an object or avatar? + || (has_owner && (antispam->checkQueue(NACLAntiSpamRegistry::QUEUE_CHAT, owner_id))))) // Spam from a resident? return; // NaCl End @@ -6923,9 +6925,11 @@ void process_script_dialog(LLMessageSystem* msg, void**) // NaCl End } + bool has_owner = owner_id.notNull(); + // NaCl - Antispam - if (owner_id.isNull() ? is_spam_filtered(IM_COUNT, LLAvatarActions::isFriend(object_id), object_id == gAgentID) - : is_spam_filtered(IM_COUNT, LLAvatarActions::isFriend(owner_id), owner_id == gAgentID)) return; + if (!has_owner ? is_spam_filtered(IM_COUNT, LLAvatarActions::isFriend(object_id), object_id == gAgentID) + : is_spam_filtered(IM_COUNT, LLAvatarActions::isFriend(owner_id), !is_group && owner_id == gAgentID)) return; // NaCl End if (LLMuteList::getInstance()->isMuted(object_id) || LLMuteList::getInstance()->isMuted(owner_id)) @@ -6933,6 +6937,10 @@ void process_script_dialog(LLMessageSystem* msg, void**) return; } + auto chatter = gObjectList.findObject(object_id); + // Singu Note: Try to get Owner whenever possible + if (chatter && has_owner) chatter->mOwnerID = owner_id; + std::string message; std::string last_name; std::string object_name; diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index f6d8a20a9..8deaa7829 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -1258,6 +1258,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, mesgsys->getUUIDFast(_PREHASH_ObjectData, _PREHASH_Sound, audio_uuid, block_num ); // HACK: Owner id only valid if non-null sound id or particle system mesgsys->getUUIDFast(_PREHASH_ObjectData, _PREHASH_OwnerID, owner_id, block_num ); + if (owner_id.notNull()) mOwnerID = owner_id; // Singu Note: Try to get Owner whenever possible mesgsys->getF32Fast( _PREHASH_ObjectData, _PREHASH_Gain, gain, block_num ); mesgsys->getU8Fast( _PREHASH_ObjectData, _PREHASH_Flags, sound_flags, block_num ); mesgsys->getU8Fast( _PREHASH_ObjectData, _PREHASH_Material, material, block_num );