--- 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;
+ }
}
}