commsfwsupport/commselements/serverden/src/sd_workerthread.cpp
changeset 65 41cc8e7ff496
parent 0 dfb7c4ff071f
--- a/commsfwsupport/commselements/serverden/src/sd_workerthread.cpp	Fri Jun 11 14:52:21 2010 +0300
+++ b/commsfwsupport/commselements/serverden/src/sd_workerthread.cpp	Wed Aug 18 10:59:59 2010 +0300
@@ -454,7 +454,7 @@
 	#endif
 
 	// Mark the peer handler as unbinding
-    __CFLOG_VAR(( KECommonComponentTag, KECommonServerTag, _L8("W%d: CFUnbindMessageReceived %S <=> %S"),
+    COMMONLOG((WorkerId(), KECommonBootingTag, _L8("W%d: CFUnbindMessageReceived %S <=> %S"),
 		WorkerId(),
 		&fullModName1,
 		&fullModName2 ));
@@ -483,7 +483,7 @@
 		{
 		iTransport->SetLastRequestIdConcerningPeer(unbindId, aMsg.Identifier());
 		iTransport->SetDropTransportPending(unbindId, ETrue);
-		MaybeCompleteUnbinding(unbindId);
+		MaybeCompleteUnbinding(unbindId, aMsg.PeerIsDead());
 		}
 	else
 		{
@@ -507,7 +507,7 @@
 			// We always have a transport to ourself & it needs no unbinding
 			if(player != WorkerId())
 				{
-				MaybeCompleteUnbinding(player);
+				MaybeCompleteUnbinding(player, EFalse);
 				if(iTransport->PeerReachable(player))
 					{
 					return EFalse;
@@ -526,13 +526,13 @@
 @see CCommonPlayer::CanUnbindFromWorker
 @see TCFUnbindCompleteMsg
 */
-EXPORT_C void CCommonWorkerThread::MaybeCompleteUnbinding(TWorkerId aWorker)
+EXPORT_C void CCommonWorkerThread::MaybeCompleteUnbinding(TWorkerId aWorker, TBool aPeerIsDead)
 	{
 	if(iTransport->PeerReachable(aWorker) && iTransport->IsDropTransportPending(aWorker))
 		{
-		if(!Dealer() || Dealer()->CanUnbindFromWorker(aWorker))
+		if(aPeerIsDead || !Dealer() || Dealer()->CanUnbindFromWorker(aWorker))
 			{
-			if(!Player() || Player()->CanUnbindFromWorker(aWorker))
+			if(aPeerIsDead || !Player() || Player()->CanUnbindFromWorker(aWorker))
 				{
 				COMMONLOG((WorkerId(), KECommonBootingTag, _L8("CCommonWorkerThread::MaybeCompleteUnbinding(%d) - dropping transport & unbinding"), aWorker));
 				// Let the peer know that we've unbound - if it has management responsibility towards us then
@@ -719,7 +719,7 @@
 
 			if(iTransport->PeerReachable(peerId))
 				{
-				MaybeCompleteUnbinding(peerId);
+				MaybeCompleteUnbinding(peerId, ETrue);
 				if(iTransport->PeerReachable(peerId))
 					{
 					COMMONLOG((iWorkerId, KECommonServerTag, _L8("Destroying peer #%d handler"),peerId));