summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rwxr-xr-xindra/newview/llappearancemgr.cpp8
-rwxr-xr-xindra/newview/llvoavatar.cpp9
2 files changed, 14 insertions, 3 deletions
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 963317affd..ec859b8709 100755
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -3422,12 +3422,14 @@ void LLAppearanceMgr::serverAppearanceUpdateCoro()
if (cofVersion < lastRcv)
{
LL_WARNS("Avatar") << "Have already received update for cof version " << lastRcv
- << " but re-requesting for " << cofVersion << LL_ENDL;
+ << " ignoring request for " << cofVersion << LL_ENDL;
+ return;
}
- if (lastReq >= cofVersion)
+ if (lastReq > cofVersion)
{
LL_WARNS("Avatar") << "Request already in flight for cof version " << lastReq
- << " re-requesting for " << cofVersion << LL_ENDL;
+ << " ignoring request for " << cofVersion << LL_ENDL;
+ return;
}
}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 17722e31ca..62ee1a6424 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7356,6 +7356,7 @@ bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32
//-----------------------------------------------------------------------------
void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
{
+ static S32 largestCOFSeen(LLViewerInventoryCategory::VERSION_UNKNOWN);
LL_DEBUGS("Avatar") << "starts" << LL_ENDL;
bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");
@@ -7393,6 +7394,14 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
S32 this_update_cof_version = contents.mCOFVersion;
S32 last_update_request_cof_version = mLastUpdateRequestCOFVersion;
+ if (largestCOFSeen > this_update_cof_version)
+ {
+ LL_WARNS("Avatar") << "Already processed appearance for COF version " <<
+ largestCOFSeen << ", discarding appearance with COF " << this_update_cof_version << LL_ENDL;
+ return;
+ }
+ largestCOFSeen = this_update_cof_version;
+
if( isSelf() )
{
LL_DEBUGS("Avatar") << "this_update_cof_version " << this_update_cof_version