--- 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();