diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llmessage/lltransfermanager.cpp | 60 | ||||
| -rw-r--r-- | indra/llmessage/lltransfermanager.h | 4 | 
2 files changed, 39 insertions, 25 deletions
| diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp index 034680caf8..38b743fb75 100644 --- a/indra/llmessage/lltransfermanager.cpp +++ b/indra/llmessage/lltransfermanager.cpp @@ -606,16 +606,21 @@ void LLTransferManager::processTransferAbort(LLMessageSystem *msgp, void **)  void LLTransferManager::reliablePacketCallback(void **user_data, S32 result)  {  	LLUUID *transfer_idp = (LLUUID *)user_data; -	if (result) +	if (result && +		transfer_idp != NULL)  	{ -		llwarns << "Aborting reliable transfer " << *transfer_idp << " due to failed reliable resends!" << llendl;  		LLTransferSource *tsp = gTransferManager.findTransferSource(*transfer_idp);  		if (tsp)  		{ +			llwarns << "Aborting reliable transfer " << *transfer_idp << " due to failed reliable resends!" << llendl;  			LLTransferSourceChannel *tscp = tsp->mChannelp;  			tsp->abortTransfer();  			tscp->deleteTransfer(tsp);  		} +		else +		{ +			llwarns << "Aborting reliable transfer " << *transfer_idp << " but can't find the LLTransferSource object" << llendl; +		}  	}  	delete transfer_idp;  } @@ -892,22 +897,26 @@ LLTransferSource *LLTransferSourceChannel::findTransferSource(const LLUUID &tran  } -BOOL LLTransferSourceChannel::deleteTransfer(LLTransferSource *tsp) +void LLTransferSourceChannel::deleteTransfer(LLTransferSource *tsp)  { - -	LLPriQueueMap<LLTransferSource *>::pqm_iter iter; -	for (iter = mTransferSources.mMap.begin(); iter != mTransferSources.mMap.end(); iter++) +	if (tsp)  	{ -		if (iter->second == tsp) +		LLPriQueueMap<LLTransferSource *>::pqm_iter iter; +		for (iter = mTransferSources.mMap.begin(); iter != mTransferSources.mMap.end(); iter++)  		{ -			delete tsp; -			mTransferSources.mMap.erase(iter); -			return TRUE; +			if (iter->second == tsp) +			{ +				delete tsp; +				mTransferSources.mMap.erase(iter); +				return; +			}  		} -	} -	llerrs << "Unable to find transfer source to delete!" << llendl; -	return FALSE; +		llwarns << "Unable to find transfer source id "  +			<< tsp->getID() +			<< " to delete!"  +			<< llendl; +	}  } @@ -1008,21 +1017,26 @@ LLTransferTarget *LLTransferTargetChannel::findTransferTarget(const LLUUID &tran  } -BOOL LLTransferTargetChannel::deleteTransfer(LLTransferTarget *ttp) +void LLTransferTargetChannel::deleteTransfer(LLTransferTarget *ttp)  { -	tt_iter iter; -	for (iter = mTransferTargets.begin(); iter != mTransferTargets.end(); iter++) +	if (ttp)  	{ -		if (*iter == ttp) +		tt_iter iter; +		for (iter = mTransferTargets.begin(); iter != mTransferTargets.end(); iter++)  		{ -			delete ttp; -			mTransferTargets.erase(iter); -			return TRUE; +			if (*iter == ttp) +			{ +				delete ttp; +				mTransferTargets.erase(iter); +				return; +			}  		} -	} -	llerrs << "Unable to find transfer target to delete!" << llendl; -	return FALSE; +		llwarns << "Unable to find transfer target id "  +			<< ttp->getID() +			<< " to delete!"  +			<< llendl; +	}  } diff --git a/indra/llmessage/lltransfermanager.h b/indra/llmessage/lltransfermanager.h index 252e05d1d1..6aad153c24 100644 --- a/indra/llmessage/lltransfermanager.h +++ b/indra/llmessage/lltransfermanager.h @@ -199,7 +199,7 @@ public:  	void				addTransferSource(LLTransferSource *sourcep);  	LLTransferSource	*findTransferSource(const LLUUID &transfer_id); -	BOOL				deleteTransfer(LLTransferSource *tsp); +	void				deleteTransfer(LLTransferSource *tsp);  	void					setThrottleID(const S32 throttle_id)	{ mThrottleID = throttle_id; } @@ -232,7 +232,7 @@ public:  						 const F32 priority);  	LLTransferTarget		*findTransferTarget(const LLUUID &transfer_id); -	BOOL					deleteTransfer(LLTransferTarget *ttp); +	void					deleteTransfer(LLTransferTarget *ttp);  	LLTransferChannelType	getChannelType() const		{ return mChannelType; } | 
