From 5a6983734572c6a72aa1af1fce8f2993e6e8c107 Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Mon, 4 Feb 2013 12:23:33 -0600
Subject: [PATCH] MAINT-2323 Fix for crash on shutodwn in mesh responder
 destructors

---
 indra/newview/llmeshrepository.cpp | 33 +++++++++++++++++-------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 09003e3e536..12236150797 100755
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -215,17 +215,19 @@ class LLMeshHeaderResponder : public LLCurl::Responder
 
 	~LLMeshHeaderResponder()
 	{
-		if (!mProcessed && !LLApp::isQuitting())
-		{ //something went wrong, retry
-			llwarns << "Timeout or service unavailable, retrying." << llendl;
-			LLMeshRepository::sHTTPRetryCount++;
-			LLMeshRepoThread::HeaderRequest req(mMeshParams);
-			LLMutexLock lock(gMeshRepo.mThread->mMutex);
-			gMeshRepo.mThread->mHeaderReqQ.push(req);
+		if (!LLApp::isQuitting())
+		{
+			if (!mProcessed)
+			{ //something went wrong, retry
+				llwarns << "Timeout or service unavailable, retrying." << llendl;
+				LLMeshRepository::sHTTPRetryCount++;
+				LLMeshRepoThread::HeaderRequest req(mMeshParams);
+				LLMutexLock lock(gMeshRepo.mThread->mMutex);
+				gMeshRepo.mThread->mHeaderReqQ.push(req);
+			}
 
+			LLMeshRepoThread::decActiveHeaderRequests();
 		}
-
-		LLMeshRepoThread::decActiveHeaderRequests();
 	}
 
 	virtual void completedRaw(U32 status, const std::string& reason,
@@ -252,13 +254,16 @@ class LLMeshLODResponder : public LLCurl::Responder
 
 	~LLMeshLODResponder()
 	{
-		if (!mProcessed && !LLApp::isQuitting())
+		if (!LLApp::isQuitting())
 		{
-			llwarns << "Killed without being processed, retrying." << llendl;
-			LLMeshRepository::sHTTPRetryCount++;
-			gMeshRepo.mThread->lockAndLoadMeshLOD(mMeshParams, mLOD);
+			if (!mProcessed)
+			{
+				llwarns << "Killed without being processed, retrying." << llendl;
+				LLMeshRepository::sHTTPRetryCount++;
+				gMeshRepo.mThread->lockAndLoadMeshLOD(mMeshParams, mLOD);
+			}
+			LLMeshRepoThread::decActiveLODRequests();
 		}
-		LLMeshRepoThread::decActiveLODRequests();
 	}
 
 	virtual void completedRaw(U32 status, const std::string& reason,
-- 
GitLab