networkcontrol/ipnetworklayer/src/IPProtoCprStates.cpp
changeset 68 1697cc2ba93d
parent 49 b285782036ce
--- a/networkcontrol/ipnetworklayer/src/IPProtoCprStates.cpp	Thu Sep 16 13:48:44 2010 +0530
+++ b/networkcontrol/ipnetworklayer/src/IPProtoCprStates.cpp	Thu Sep 23 17:23:35 2010 +0530
@@ -409,14 +409,21 @@
     	TCFMessage::TSubConnDataTransferred wholeConnMsg(KNifEMCompatibilityLayerEntireSubConnectionUid, dmProvider->DataVolumesPtr()->iSentBytes, dmProvider->DataVolumesPtr()->iReceivedBytes);
     	TCFMessage::TSubConnDataTransferred defaultSubConnMsg(KNifEMCompatibilityLayerFakeSubConnectionId, dmProvider->DataVolumesPtr()->iSentBytes, dmProvider->DataVolumesPtr()->iReceivedBytes);
 
-    	RNodeInterface* ctrlClient = iContext.Node().GetFirstClient<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl));
-		if(ctrlClient)
-			{ // Can't send this if the client's gone
-			ctrlClient->PostMessage(iContext.NodeId(), wholeConnMsg);
-			ctrlClient->PostMessage(iContext.NodeId(), defaultSubConnMsg);
-
-			iContext.Node().iSubConnEventDataSent = ETrue;
-			}
+      // Sending data clent status change message to all the control clients
+      TClientIter<TDefaultClientMatchPolicy> ccIter = iContext.Node().GetClientIter<TDefaultClientMatchPolicy>(TClientType(TCFClientType::ECtrl), TClientType(0, TCFClientType::ELeaving));        
+	RNodeInterface* ctrlClient; 
+	TBool ctrlClientPresent = false;
+	while ((ctrlClient = ccIter++) != NULL)            
+	    {
+          //If any cntl clinet is present setting the variable ctrlClientPresent as true.
+	    ctrlClientPresent = true;
+	    ctrlClient->PostMessage(iContext.NodeId(), wholeConnMsg);    
+	    ctrlClient->PostMessage(iContext.NodeId(), defaultSubConnMsg); 
+	    }
+	if(ctrlClientPresent)
+	    {
+	    iContext.Node().iSubConnEventDataSent = ETrue;
+	    }
     	}
     }