diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 963317affdf88b4c28f6d6d6fd2c43cb61883f05..ec859b870957fd816cf301d207bd9484563fc97f 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 17722e31ca525de92fb93a194dcbcd83397784ed..62ee1a6424515b4708eb96be0f9f7ed6eec0b187 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