104 } |
104 } |
105 |
105 |
106 if (!(iSelectionPrefs.Scope()&TSelectionPrefs::ESelectFromExisting)) |
106 if (!(iSelectionPrefs.Scope()&TSelectionPrefs::ESelectFromExisting)) |
107 { |
107 { |
108 CIPProtoMetaConnectionProvider *ipprotomcpr = static_cast<CIPProtoMetaConnectionProvider *>(provider); |
108 CIPProtoMetaConnectionProvider *ipprotomcpr = static_cast<CIPProtoMetaConnectionProvider *>(provider); |
109 |
109 if (ipprotomcpr->iIapLocked) |
|
110 User::Leave(KErrPermissionDenied); |
110 |
111 |
111 TSecureId sid; |
112 TSecureId sid; |
112 ASubSessionPlatsecApiExt platsecext(iSelectionPrefs.SubSessionUniqueId()); |
113 ASubSessionPlatsecApiExt platsecext(iSelectionPrefs.SubSessionUniqueId()); |
113 if (platsecext.SecureId(sid) == KErrNone) |
114 if (platsecext.SecureId(sid) == KErrNone) |
114 { |
115 { |
115 if (ipprotomcpr->iIapLocked && sid.iId!=ipprotomcpr->iLockedIapsid) |
116 CCommsDatIapView* iapView = CCommsDatIapView::NewLC(aIapToFind); |
116 User::Leave(KErrPermissionDenied); |
117 |
117 |
118 TUint32 iapsid; |
118 CCommsDatIapView* iapView = CCommsDatIapView::NewLC(aIapToFind); |
119 iapView->GetIntL(KCDTIdIAPAppSid, iapsid); |
119 |
120 |
120 TUint32 iapsid; |
121 if (sid.iId == iapsid && iapsid != 0) |
121 iapView->GetIntL(KCDTIdIAPAppSid, iapsid); |
122 ipprotomcpr->iIapLocked = ETrue; |
122 |
123 CleanupStack::PopAndDestroy(iapView); |
123 if (sid.iId == iapsid && iapsid != 0) |
|
124 { |
|
125 ipprotomcpr->iIapLocked = ETrue; |
|
126 ipprotomcpr->iLockedIapsid=iapsid; |
|
127 } |
|
128 CleanupStack::PopAndDestroy(iapView); |
|
129 } |
124 } |
130 } |
125 } |
131 provider->IncrementBlockingDestroy(); |
126 provider->IncrementBlockingDestroy(); |
132 return provider; |
127 return provider; |
133 } |
128 } |