diff -r 2f37ef12b43e -r 1697cc2ba93d networkcontrol/ipnetworklayer/src/IPProtoCprStates.cpp --- 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(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 ccIter = iContext.Node().GetClientIter(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; + } } }