diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp
index 034680caf8c042babdcb8c4f11a796c6b6fb70ac..38b743fb75ba81ef47b87dc56536b14f1848ec49 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 252e05d1d1dd88b86be92823d5b68852340f9f18..6aad153c24c893c2578359f65749623c9a76181a 100644
--- a/indra/llmessage/lltransfermanager.h
+++ b/indra/llmessage/lltransfermanager.h
@@ -199,7 +199,7 @@ class LLTransferSourceChannel
 
 	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 @@ class LLTransferTargetChannel
 						 const F32 priority);
 
 	LLTransferTarget		*findTransferTarget(const LLUUID &transfer_id);
-	BOOL					deleteTransfer(LLTransferTarget *ttp);
+	void					deleteTransfer(LLTransferTarget *ttp);
 
 
 	LLTransferChannelType	getChannelType() const		{ return mChannelType; }