diff -r abbed5a4b42a -r 8d540f55e491 networkcontrol/ipnetworklayer/src/IPProtoTierManagerSelector.cpp --- 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(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();