434 aIapRecord.iService.iLinkedRecord->LoadL( aCommsDat ); |
435 aIapRecord.iService.iLinkedRecord->LoadL( aCommsDat ); |
435 } |
436 } |
436 |
437 |
437 CCDVPNServiceRecord* serviceRecord = |
438 CCDVPNServiceRecord* serviceRecord = |
438 static_cast<CCDVPNServiceRecord*>( aIapRecord.iService.iLinkedRecord ); |
439 static_cast<CCDVPNServiceRecord*>( aIapRecord.iService.iLinkedRecord ); |
439 |
440 |
440 serviceRecord->iServiceIAP.LoadL( aCommsDat ); |
441 TRAPD(err,serviceRecord->iServiceIAP.LoadL( aCommsDat )); |
441 |
442 if(KErrNone != err ) |
442 // It is valid to have 0 for iServiceIAP when the SNAP is configured for VPN IAP. |
443 { |
443 // So treat this is a valid configuaration and fill the aServiceType to NULL which usually contains the IAP service type(like LAN Service, Outgoing GPRS etc ) |
444 //Its valid to not have iServiceIAP record, due to introduction of ServiceSNAP for the VPN with Snap |
444 if (serviceRecord->iServiceIAP == 0) |
445 __SIP_INT_LOG1( "CNetworkManager::HandleVPNServiceL CCDVPNServiceRecord->iServiceIAP LoadL failed with error=", err) |
445 { |
446 aServiceType.Copy(_L8("")); |
446 aServiceType.Copy(_L8("")); |
447 return 0; |
447 return (serviceRecord->iServiceIAP); |
448 |
448 } |
449 } |
449 |
450 else |
450 if ( !serviceRecord->iServiceIAP.iLinkedRecord ) |
451 { |
451 { |
452 if ( !serviceRecord->iServiceIAP.iLinkedRecord ) |
452 // Ownership of created record is transferred |
453 { |
453 serviceRecord->iServiceIAP.iLinkedRecord = |
454 // Ownership of created record is transferred |
454 static_cast<CCDIAPRecord*>( |
455 serviceRecord->iServiceIAP.iLinkedRecord = |
455 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); |
456 static_cast<CCDIAPRecord*>( |
456 serviceRecord->iServiceIAP.iLinkedRecord->SetRecordId( |
457 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); |
457 serviceRecord->iServiceIAP ); |
458 serviceRecord->iServiceIAP.iLinkedRecord->SetRecordId( |
458 |
459 serviceRecord->iServiceIAP ); |
459 serviceRecord->iServiceIAP.iLinkedRecord->LoadL( aCommsDat ); |
460 |
460 } |
461 serviceRecord->iServiceIAP.iLinkedRecord->LoadL( aCommsDat ); |
461 |
462 } |
462 CCDIAPRecord* iapRecord = |
463 |
463 static_cast<CCDIAPRecord*>( serviceRecord->iServiceIAP.iLinkedRecord ); |
464 |
464 |
465 CCDIAPRecord* iapRecord = |
465 // We need service type info of the "real" iap |
466 static_cast<CCDIAPRecord*>( serviceRecord->iServiceIAP.iLinkedRecord ); |
466 GetServiceTypeL( *iapRecord, aServiceType ); |
467 |
467 |
468 // We need service type info of the "real" iap |
468 return iapRecord->RecordId(); |
469 GetServiceTypeL( *iapRecord, aServiceType ); |
469 } |
470 return iapRecord->RecordId(); |
|
471 } |
|
472 } |
470 |
473 |
471 // ----------------------------------------------------------------------------- |
474 // ----------------------------------------------------------------------------- |
472 // CNetworkManager::GetServiceTypeL |
475 // CNetworkManager::GetServiceTypeL |
473 // ----------------------------------------------------------------------------- |
476 // ----------------------------------------------------------------------------- |
474 // |
477 // |