diff options
| author | Dave Parks <davep@lindenlab.com> | 2012-10-26 11:17:36 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2012-10-26 11:17:36 -0500 | 
| commit | 7f639cb715af7f63bd8780c04a84eff8fa07a87a (patch) | |
| tree | 56c398d1a82d20c4c0777f24fffb4c57879a6842 /indra | |
| parent | b014d949d7a294068dfe2367faee8f2006ec22af (diff) | |
| parent | 002634a41bcaa29fbc8ed6a20ef60230185bf1a2 (diff) | |
Automated merge with https://bitbucket.org/lindenlab/viewer-cat
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/newview/llmeshrepository.cpp | 60 | 
1 files changed, 58 insertions, 2 deletions
| diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 57a5569dd7..4cd50ecd15 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -204,15 +204,18 @@ class LLMeshHeaderResponder : public LLCurl::Responder  {  public:  	LLVolumeParams mMeshParams; -	 +	bool mProcessed; +  	LLMeshHeaderResponder(const LLVolumeParams& mesh_params)  		: mMeshParams(mesh_params)  	{  		LLMeshRepoThread::sActiveHeaderRequests++; +		mProcessed = false;  	}  	~LLMeshHeaderResponder()  	{ +		llassert(mProcessed);  		LLMeshRepoThread::sActiveHeaderRequests--;  	} @@ -229,15 +232,18 @@ public:  	S32 mLOD;  	U32 mRequestedBytes;  	U32 mOffset; +	bool mProcessed;  	LLMeshLODResponder(const LLVolumeParams& mesh_params, S32 lod, U32 offset, U32 requested_bytes)  		: mMeshParams(mesh_params), mLOD(lod), mOffset(offset), mRequestedBytes(requested_bytes)  	{  		LLMeshRepoThread::sActiveLODRequests++; +		mProcessed = false;  	}  	~LLMeshLODResponder()  	{ +		llassert(mProcessed);  		LLMeshRepoThread::sActiveLODRequests--;  	} @@ -253,10 +259,17 @@ public:  	LLUUID mMeshID;  	U32 mRequestedBytes;  	U32 mOffset; +	bool mProcessed;  	LLMeshSkinInfoResponder(const LLUUID& id, U32 offset, U32 size)  		: mMeshID(id), mRequestedBytes(size), mOffset(offset)  	{ +		mProcessed = false; +	} + +	~LLMeshSkinInfoResponder() +	{ +		llassert(mProcessed);  	}  	virtual void completedRaw(U32 status, const std::string& reason, @@ -271,10 +284,17 @@ public:  	LLUUID mMeshID;  	U32 mRequestedBytes;  	U32 mOffset; +	bool mProcessed;  	LLMeshDecompositionResponder(const LLUUID& id, U32 offset, U32 size)  		: mMeshID(id), mRequestedBytes(size), mOffset(offset)  	{ +		mProcessed = false; +	} + +	~LLMeshDecompositionResponder() +	{ +		llassert(mProcessed);  	}  	virtual void completedRaw(U32 status, const std::string& reason, @@ -289,10 +309,17 @@ public:  	LLUUID mMeshID;  	U32 mRequestedBytes;  	U32 mOffset; +	bool mProcessed;  	LLMeshPhysicsShapeResponder(const LLUUID& id, U32 offset, U32 size)  		: mMeshID(id), mRequestedBytes(size), mOffset(offset)  	{ +		mProcessed = false; +	} + +	~LLMeshPhysicsShapeResponder() +	{ +		llassert(mProcessed);  	}  	virtual void completedRaw(U32 status, const std::string& reason, @@ -1819,6 +1846,7 @@ void LLMeshLODResponder::completedRaw(U32 status, const std::string& reason,  							  const LLChannelDescriptors& channels,  							  const LLIOPipe::buffer_ptr_t& buffer)  { +	mProcessed = true;  	S32 data_size = buffer->countAfter(channels.in(), NULL); @@ -1831,11 +1859,13 @@ void LLMeshLODResponder::completedRaw(U32 status, const std::string& reason,  	{  		if (status == 499 || status == 503)  		{ //timeout or service unavailable, try again +			llwarns << "Timeout or service unavailable, retrying." << llendl;  			LLMeshRepository::sHTTPRetryCount++;  			gMeshRepo.mThread->loadMeshLOD(mMeshParams, mLOD);  		}  		else  		{ +			llassert(status == 499 || status == 503); //intentionally trigger a breakpoint  			llwarns << "Unhandled status " << status << llendl;  		}  		return; @@ -1874,6 +1904,8 @@ void LLMeshSkinInfoResponder::completedRaw(U32 status, const std::string& reason  							  const LLChannelDescriptors& channels,  							  const LLIOPipe::buffer_ptr_t& buffer)  { +	mProcessed = true; +  	S32 data_size = buffer->countAfter(channels.in(), NULL);  	if (status < 200 || status > 400) @@ -1885,11 +1917,13 @@ void LLMeshSkinInfoResponder::completedRaw(U32 status, const std::string& reason  	{  		if (status == 499 || status == 503)  		{ //timeout or service unavailable, try again +			llwarns << "Timeout or service unavailable, retrying." << llendl;  			LLMeshRepository::sHTTPRetryCount++;  			gMeshRepo.mThread->loadMeshSkinInfo(mMeshID);  		}  		else  		{ +			llassert(status == 499 || status == 503); //intentionally trigger a breakpoint  			llwarns << "Unhandled status " << status << llendl;  		}  		return; @@ -1928,6 +1962,8 @@ void LLMeshDecompositionResponder::completedRaw(U32 status, const std::string& r  							  const LLChannelDescriptors& channels,  							  const LLIOPipe::buffer_ptr_t& buffer)  { +	mProcessed = true; +  	S32 data_size = buffer->countAfter(channels.in(), NULL);  	if (status < 200 || status > 400) @@ -1939,11 +1975,13 @@ void LLMeshDecompositionResponder::completedRaw(U32 status, const std::string& r  	{  		if (status == 499 || status == 503)  		{ //timeout or service unavailable, try again +			llwarns << "Timeout or service unavailable, retrying." << llendl;  			LLMeshRepository::sHTTPRetryCount++;  			gMeshRepo.mThread->loadMeshDecomposition(mMeshID);  		}  		else  		{ +			llassert(status == 499 || status == 503); //intentionally trigger a breakpoint  			llwarns << "Unhandled status " << status << llendl;  		}  		return; @@ -1982,6 +2020,8 @@ void LLMeshPhysicsShapeResponder::completedRaw(U32 status, const std::string& re  							  const LLChannelDescriptors& channels,  							  const LLIOPipe::buffer_ptr_t& buffer)  { +	mProcessed = true; +  	S32 data_size = buffer->countAfter(channels.in(), NULL);  	if (status < 200 || status > 400) @@ -1993,11 +2033,13 @@ void LLMeshPhysicsShapeResponder::completedRaw(U32 status, const std::string& re  	{  		if (status == 499 || status == 503)  		{ //timeout or service unavailable, try again +			llwarns << "Timeout or service unavailable, retrying." << llendl;  			LLMeshRepository::sHTTPRetryCount++;  			gMeshRepo.mThread->loadMeshPhysicsShape(mMeshID);  		}  		else  		{ +			llassert(status == 499 || status == 503); //intentionally trigger a breakpoint  			llwarns << "Unhandled status " << status << llendl;  		}  		return; @@ -2036,6 +2078,8 @@ void LLMeshHeaderResponder::completedRaw(U32 status, const std::string& reason,  							  const LLChannelDescriptors& channels,  							  const LLIOPipe::buffer_ptr_t& buffer)  { +	mProcessed = true; +  	if (status < 200 || status > 400)  	{  		//llwarns @@ -2048,8 +2092,12 @@ void LLMeshHeaderResponder::completedRaw(U32 status, const std::string& reason,  		// TODO*: Add maximum retry logic, exponential backoff  		// and (somewhat more optional than the others) retries  		// again after some set period of time + +		llassert(status == 503 || status == 499); +  		if (status == 503 || status == 499)  		{ //retry +			llwarns << "Timeout or service unavailable, retrying." << llendl;  			LLMeshRepository::sHTTPRetryCount++;  			LLMeshRepoThread::HeaderRequest req(mMeshParams);  			LLMutexLock lock(gMeshRepo.mThread->mMutex); @@ -2057,6 +2105,10 @@ void LLMeshHeaderResponder::completedRaw(U32 status, const std::string& reason,  			return;  		} +		else +		{ +			llwarns << "Unhandled status." << llendl; +		}  	}  	S32 data_size = buffer->countAfter(channels.in(), NULL); @@ -2071,7 +2123,11 @@ void LLMeshHeaderResponder::completedRaw(U32 status, const std::string& reason,  	LLMeshRepository::sBytesReceived += llmin(data_size, 4096); -	if (!gMeshRepo.mThread->headerReceived(mMeshParams, data, data_size)) +	bool success = gMeshRepo.mThread->headerReceived(mMeshParams, data, data_size); +	 +	llassert(success); + +	if (!success)  	{  		llwarns  			<< "Unable to parse mesh header: " | 
