realtimenetprots/sipfw/SIP/NetworkMonitor/src/CNetworkManager.cpp
branchRCL_3
changeset 12 c2e8c8b73582
parent 0 307788aac0a8
child 55 36ea1f90a3d8
--- a/realtimenetprots/sipfw/SIP/NetworkMonitor/src/CNetworkManager.cpp	Mon Mar 15 12:42:05 2010 +0200
+++ b/realtimenetprots/sipfw/SIP/NetworkMonitor/src/CNetworkManager.cpp	Wed Mar 31 22:10:27 2010 +0300
@@ -410,7 +410,8 @@
         aObjectName.AppendNum( static_cast<TInt64>( realIapId ) );
         }        
 #endif
-
+	__SIP_INT_LOG1( "CNetworkManager::GetServiceTypeAndObjectNameL end realIapID =", realIapId )	
+	
     return realIapId;
 	}
 
@@ -436,37 +437,39 @@
     
     CCDVPNServiceRecord* serviceRecord = 
         static_cast<CCDVPNServiceRecord*>( aIapRecord.iService.iLinkedRecord );
-    
-    serviceRecord->iServiceIAP.LoadL( aCommsDat );
-    
-    // It is valid to have 0 for iServiceIAP when the SNAP is configured for VPN IAP. 
-    // 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 )     
-    if (serviceRecord->iServiceIAP == 0)
-    	{    	
-   		aServiceType.Copy(_L8("")); 
-    	return (serviceRecord->iServiceIAP);
-    	}
-    
-    if ( !serviceRecord->iServiceIAP.iLinkedRecord )
-        {
-        // Ownership of created record is transferred
-        serviceRecord->iServiceIAP.iLinkedRecord = 
-            static_cast<CCDIAPRecord*>(
-                CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
-        serviceRecord->iServiceIAP.iLinkedRecord->SetRecordId( 
-            serviceRecord->iServiceIAP );
-            
-        serviceRecord->iServiceIAP.iLinkedRecord->LoadL( aCommsDat );
-        }
 
-    CCDIAPRecord* iapRecord = 
-        static_cast<CCDIAPRecord*>( serviceRecord->iServiceIAP.iLinkedRecord );
-    
-    // We need service type info of the "real" iap
-    GetServiceTypeL( *iapRecord, aServiceType );
-       
-    return iapRecord->RecordId();
-    }
+	TRAPD(err,serviceRecord->iServiceIAP.LoadL( aCommsDat ));
+	if(KErrNone != err )
+		{
+		//Its valid to not have iServiceIAP record, due to introduction of ServiceSNAP for the VPN with Snap
+		__SIP_INT_LOG1( "CNetworkManager::HandleVPNServiceL CCDVPNServiceRecord->iServiceIAP LoadL failed with error=", err)
+		aServiceType.Copy(_L8("")); 
+		return 0;
+		
+		}
+	else
+		{
+	    	if ( !serviceRecord->iServiceIAP.iLinkedRecord )
+	        {
+			// Ownership of created record is transferred
+	        serviceRecord->iServiceIAP.iLinkedRecord = 
+	            static_cast<CCDIAPRecord*>(
+	                CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
+	        serviceRecord->iServiceIAP.iLinkedRecord->SetRecordId( 
+	            serviceRecord->iServiceIAP );
+	            
+	        serviceRecord->iServiceIAP.iLinkedRecord->LoadL( aCommsDat );
+			}
+		
+
+	    	CCDIAPRecord* iapRecord = 
+	        	static_cast<CCDIAPRecord*>( serviceRecord->iServiceIAP.iLinkedRecord );
+	    
+	    	// We need service type info of the "real" iap
+	    	GetServiceTypeL( *iapRecord, aServiceType );
+	       	return iapRecord->RecordId();
+		}
+	}
 
 // -----------------------------------------------------------------------------
 // CNetworkManager::GetServiceTypeL