networkcontrol/ipnetworklayer/src/IPProtoTierManagerSelector.cpp
branchRCL_3
changeset 22 8d540f55e491
parent 21 abbed5a4b42a
--- a/networkcontrol/ipnetworklayer/src/IPProtoTierManagerSelector.cpp	Tue Aug 31 16:45:15 2010 +0300
+++ b/networkcontrol/ipnetworklayer/src/IPProtoTierManagerSelector.cpp	Wed Sep 01 12:33:58 2010 +0100
@@ -106,21 +106,26 @@
 	if (!(iSelectionPrefs.Scope()&TSelectionPrefs::ESelectFromExisting))
 		{
 		CIPProtoMetaConnectionProvider *ipprotomcpr = static_cast<CIPProtoMetaConnectionProvider *>(provider);
-		if (ipprotomcpr->iIapLocked)
-			User::Leave(KErrPermissionDenied);
+
 
 		TSecureId sid;
 		ASubSessionPlatsecApiExt platsecext(iSelectionPrefs.SubSessionUniqueId());
 		if (platsecext.SecureId(sid) == KErrNone)
 			{
-			CCommsDatIapView* iapView = CCommsDatIapView::NewLC(aIapToFind);
+            if (ipprotomcpr->iIapLocked && sid.iId!=ipprotomcpr->iLockedIapsid)
+                User::Leave(KErrPermissionDenied);
 
-			TUint32 iapsid;
-			iapView->GetIntL(KCDTIdIAPAppSid, iapsid);
-
-			if (sid.iId == iapsid && iapsid != 0)
-				ipprotomcpr->iIapLocked = ETrue;
-			CleanupStack::PopAndDestroy(iapView);
+            CCommsDatIapView* iapView = CCommsDatIapView::NewLC(aIapToFind);
+                
+            TUint32 iapsid;
+            iapView->GetIntL(KCDTIdIAPAppSid, iapsid);
+                    
+            if (sid.iId == iapsid && iapsid != 0)
+            {
+                ipprotomcpr->iIapLocked = ETrue;
+                ipprotomcpr->iLockedIapsid=iapsid;
+            }
+            CleanupStack::PopAndDestroy(iapView);
 			}
 		}
 	provider->IncrementBlockingDestroy();