diff -r 9c97ad6591ae -r 7ec726f93df1 cmmanager/cmmgr/cmmplugins/cmpluginwlan/src/cmpluginwlan.cpp --- a/cmmanager/cmmgr/cmmplugins/cmpluginwlan/src/cmpluginwlan.cpp Mon May 03 12:53:07 2010 +0300 +++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/src/cmpluginwlan.cpp Fri May 14 16:15:46 2010 +0300 @@ -1261,16 +1261,14 @@ TBool retVal( EFalse ); - if ( (TPtrC(aIapRecord->iServiceType) == TPtrC(KCDTypeNameLANService) ) && - TPtrC(aIapRecord->iBearerType) == TPtrC(KCDTypeNameLANBearer) ) + if ( ( TPtrC( aIapRecord->iServiceType ) == TPtrC( KCDTypeNameLANService ) ) && + TPtrC( aIapRecord->iBearerType ) == TPtrC( KCDTypeNameLANBearer ) ) { // Check if there is a WLAN record with an iServiceId == iIapRecord->iService. CCDWlanServiceRecord* tmprec = new( ELeave ) CCDWlanServiceRecord ( iWlanTableId ); CleanupStack::PushL( tmprec ); - TInt service = aIapRecord->iService; - - tmprec->iWlanServiceId.SetL( (TUint32)service ); + tmprec->iWlanServiceId.SetL( ( TUint32 )( aIapRecord->iService ) ); if ( tmprec->FindL( iSession ) ) { // we found at least one WLAN using this IAP, @@ -1292,10 +1290,9 @@ { OstTraceFunctionEntry0( CCMPLUGINWLAN_DELETEBEARERRECORDSL_ENTRY ); - // as base class deletes service record, in this case LAN, - // only WLAN related stuff needs to be deleted + // As base class deletes service record, in this case LAN, only WLAN + // related stuff needs to be deleted. iWlanServiceRecord->DeleteL( iSession ); - iWlanServiceRecord = NULL; OstTraceFunctionExit0( CCMPLUGINWLAN_DELETEBEARERRECORDSL_EXIT ); } @@ -1463,7 +1460,7 @@ aGenRecordArray[KIapRecordIndex] ); CheckIfNameModifiedL( iapRecord, wlanServiceRecord ); - wlanServiceRecord->iWlanServiceId.SetL( iapRecord->iService ); + wlanServiceRecord->iWlanServiceId.SetL( ( TUint32 )( iapRecord->iService ) ); CCDLANServiceRecord* serviceRecord = static_cast( @@ -1491,101 +1488,125 @@ // ---------------------------------------------------------------------------- // void CCmPluginWlan::UpdateServiceRecordL( - RPointerArray& aGenRecordArray, - RPointerArray& aBearerSpecRecordArray ) + RPointerArray& aGenRecordArray, + RPointerArray& aBearerSpecRecordArray ) { OstTraceFunctionEntry0( CCMPLUGINWLAN_UPDATESERVICERECORDL_ENTRY ); - // Delete the original record and create a copy from the parameter + // Delete the original record and create a copy from the client's copy. delete iServiceRecord; iServiceRecord = NULL; - iServiceRecord = static_cast - (CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) ); + iServiceRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) ); - // LAN Service copy does not work so we have to copy it manually + // LAN Service copy does not work so we have to copy it manually. + + // Plugin's commsdat copy. + CCDLANServiceRecord* origServiceRecord = static_cast( iServiceRecord ); - CCDLANServiceRecord* lanServiceRecordTo = - static_cast( - iServiceRecord ); + // Client's copy of lan service record. + CCDLANServiceRecord* clientServiceRecordCopy = + static_cast( aGenRecordArray[KServiceRecordIndex] ); - CCDLANServiceRecord* lanServiceRecordFrom = - static_cast( - aGenRecordArray[KServiceRecordIndex] ); - - if ( !lanServiceRecordFrom->iRecordName.IsNull() ) + if ( !clientServiceRecordCopy->iRecordTag.IsNull() ) + { + origServiceRecord->iRecordTag.SetL( clientServiceRecordCopy->iRecordTag ); + } + if ( !clientServiceRecordCopy->iRecordName.IsNull() ) + { + origServiceRecord->iRecordName.SetL( clientServiceRecordCopy->iRecordName ); + } + if ( !clientServiceRecordCopy->iServiceEnableLlmnr.IsNull() ) { - lanServiceRecordTo->iRecordName.SetL( lanServiceRecordFrom->iRecordName ); + origServiceRecord->iServiceEnableLlmnr.SetL( clientServiceRecordCopy->iServiceEnableLlmnr ); } - if ( !lanServiceRecordFrom->iIfNetworks.IsNull() ) + if ( !clientServiceRecordCopy->iIfNetworks.IsNull() ) { - lanServiceRecordTo->iIfNetworks.SetL( lanServiceRecordFrom->iIfNetworks ); + origServiceRecord->iIfNetworks.SetL( clientServiceRecordCopy->iIfNetworks ); } - if ( !lanServiceRecordFrom->iIpGateway.IsNull() ) + if ( !clientServiceRecordCopy->iIpNetmask.IsNull() ) + { + origServiceRecord->iIpNetmask.SetL( clientServiceRecordCopy->iIpNetmask ); + } + if ( !clientServiceRecordCopy->iIpGateway.IsNull() ) { - lanServiceRecordTo->iIpGateway.SetL( lanServiceRecordFrom->iIpGateway ); + origServiceRecord->iIpGateway.SetL( clientServiceRecordCopy->iIpGateway ); } - if ( !lanServiceRecordFrom->iIpAddrFromServer.IsNull() ) + if ( !clientServiceRecordCopy->iIpAddrFromServer.IsNull() ) { - lanServiceRecordTo->iIpAddrFromServer.SetL( lanServiceRecordFrom->iIpAddrFromServer ); + origServiceRecord->iIpAddrFromServer.SetL( clientServiceRecordCopy->iIpAddrFromServer ); } - if ( !lanServiceRecordFrom->iIpAddr.IsNull() ) + if ( !clientServiceRecordCopy->iIpAddr.IsNull() ) + { + origServiceRecord->iIpAddr.SetL( clientServiceRecordCopy->iIpAddr ); + } + if ( !clientServiceRecordCopy->iIpDnsAddrFromServer.IsNull() ) { - lanServiceRecordTo->iIpAddr.SetL( lanServiceRecordFrom->iIpAddr ); + origServiceRecord->iIpDnsAddrFromServer.SetL( clientServiceRecordCopy->iIpDnsAddrFromServer ); } - if ( !lanServiceRecordFrom->iIpDnsAddrFromServer.IsNull() ) + if ( !clientServiceRecordCopy->iIpNameServer1.IsNull() ) { - lanServiceRecordTo->iIpDnsAddrFromServer.SetL( lanServiceRecordFrom->iIpDnsAddrFromServer ); + origServiceRecord->iIpNameServer1.SetL( clientServiceRecordCopy->iIpNameServer1 ); } - if ( !lanServiceRecordFrom->iIpNameServer1.IsNull() ) + if ( !clientServiceRecordCopy->iIpNameServer2.IsNull() ) { - lanServiceRecordTo->iIpNameServer1.SetL( lanServiceRecordFrom->iIpNameServer1 ); + origServiceRecord->iIpNameServer2.SetL( clientServiceRecordCopy->iIpNameServer2 ); } - if ( !lanServiceRecordFrom->iIpNameServer2.IsNull() ) + if ( !clientServiceRecordCopy->iIp6DnsAddrFromServer.IsNull() ) { - lanServiceRecordTo->iIpNameServer2.SetL( lanServiceRecordFrom->iIpNameServer2 ); + origServiceRecord->iIp6DnsAddrFromServer.SetL( clientServiceRecordCopy->iIp6DnsAddrFromServer ); } - if ( !lanServiceRecordFrom->iIp6DnsAddrFromServer.IsNull() ) + if ( !clientServiceRecordCopy->iIp6NameServer1.IsNull() ) + { + origServiceRecord->iIp6NameServer1.SetL( clientServiceRecordCopy->iIp6NameServer1 ); + } + if ( !clientServiceRecordCopy->iIp6NameServer2.IsNull() ) { - lanServiceRecordTo->iIp6DnsAddrFromServer.SetL( lanServiceRecordFrom->iIp6DnsAddrFromServer ); + origServiceRecord->iIp6NameServer2.SetL( clientServiceRecordCopy->iIp6NameServer2 ); } - if ( !lanServiceRecordFrom->iIp6NameServer1.IsNull() ) + if ( !clientServiceRecordCopy->iIpAddrLeaseValidFrom.IsNull() ) { - lanServiceRecordTo->iIp6NameServer1.SetL( lanServiceRecordFrom->iIp6NameServer1 ); + origServiceRecord->iIpAddrLeaseValidFrom.SetL( clientServiceRecordCopy->iIpAddrLeaseValidFrom ); } - if ( !lanServiceRecordFrom->iIp6NameServer2.IsNull() ) + if ( !clientServiceRecordCopy->iIpAddrLeaseValidTo.IsNull() ) + { + origServiceRecord->iIpAddrLeaseValidTo.SetL( clientServiceRecordCopy->iIpAddrLeaseValidTo ); + } + if ( !clientServiceRecordCopy->iConfigDaemonManagerName.IsNull() ) { - lanServiceRecordTo->iIp6NameServer2.SetL( lanServiceRecordFrom->iIp6NameServer2 ); + origServiceRecord->iConfigDaemonManagerName.SetL( clientServiceRecordCopy->iConfigDaemonManagerName ); } - if ( !lanServiceRecordFrom->iConfigDaemonManagerName.IsNull() ) + if ( !clientServiceRecordCopy->iConfigDaemonName.IsNull() ) { - lanServiceRecordTo->iConfigDaemonManagerName.SetL( lanServiceRecordFrom->iConfigDaemonManagerName ); + origServiceRecord->iConfigDaemonName.SetL( clientServiceRecordCopy->iConfigDaemonName ); } - if ( !lanServiceRecordFrom->iConfigDaemonName.IsNull() ) + if ( !clientServiceRecordCopy->iServiceExtensionTableName.IsNull() ) { - lanServiceRecordTo->iConfigDaemonName.SetL( lanServiceRecordFrom->iConfigDaemonName ); + origServiceRecord->iServiceExtensionTableName.SetL( clientServiceRecordCopy->iServiceExtensionTableName ); + } + if ( !clientServiceRecordCopy->iServiceExtensionTableRecordId.IsNull() ) + { + origServiceRecord->iServiceExtensionTableRecordId.SetL( clientServiceRecordCopy->iServiceExtensionTableRecordId ); //TODO, check this works ok. } - lanServiceRecordTo->SetElementId( lanServiceRecordFrom->ElementId() ); - // this is shared between wlan iaps so it cannot be hidden or protected - lanServiceRecordTo->ClearAttributes( ECDHidden ); - lanServiceRecordTo->ClearAttributes( ECDProtectedWrite ); + origServiceRecord->SetElementId( clientServiceRecordCopy->ElementId() ); - if ( !ServiceRecord().RecordId() ) + if ( !origServiceRecord->RecordId() ) { - ServiceRecord().SetRecordId( KCDNewRecordRequest ); - ServiceRecord().StoreL( iSession ); + origServiceRecord->SetRecordId( KCDNewRecordRequest ); + origServiceRecord->StoreL( iSession ); - // Update needed values to record tables too( lanservice and wlanservice ) - lanServiceRecordFrom->SetElementId( ServiceRecord().ElementId() ); - CCDWlanServiceRecord* wlanServiceRecord = - static_cast( - aBearerSpecRecordArray[KWlanServiceRecordIndex] ); - wlanServiceRecord->iWlanServiceId.SetL( ServiceRecord().RecordId() ); + // Update received element ID to client's copy too. + clientServiceRecordCopy->SetElementId( origServiceRecord->ElementId() ); + // Update needed values to other table records too (wlanservice). + CCDWlanServiceRecord* wlanServiceRecord = static_cast( + aBearerSpecRecordArray[KWlanServiceRecordIndex] ); + wlanServiceRecord->iWlanServiceId.SetL( origServiceRecord->RecordId() ); } else { - ServiceRecord().ModifyL( iSession ); + origServiceRecord->ModifyL( iSession ); } OstTraceFunctionExit0( CCMPLUGINWLAN_UPDATESERVICERECORDL_EXIT ); @@ -1601,114 +1622,156 @@ { OstTraceFunctionEntry0( CCMPLUGINWLAN_UPDATEBEARERRECORDSL_ENTRY ); + // Delete the original record and create a copy from the client's copy. delete iWlanServiceRecord; iWlanServiceRecord = NULL; - CCDWlanServiceRecord* wlanServiceRecord = - static_cast( - aBearerSpecRecordArray[KWlanServiceRecordIndex] ); + iWlanServiceRecord = new( ELeave ) CCDWlanServiceRecord( iWlanTableId ); - iWlanServiceRecord = new( ELeave ) CCDWlanServiceRecord ( iWlanTableId ); - - iWlanServiceRecord->SetElementId( wlanServiceRecord->ElementId() ); - iWlanServiceRecord->iRecordName.SetL( wlanServiceRecord->iRecordName ); + // Client's copy of wlan service record. + CCDWlanServiceRecord* clientWlanServiceRecord = static_cast( + aBearerSpecRecordArray[KWlanServiceRecordIndex] ); - iWlanServiceRecord->iWlanServiceId.SetL( wlanServiceRecord->iWlanServiceId ); - iWlanServiceRecord->iWlanConnMode.SetL( wlanServiceRecord->iWlanConnMode ); - if ( !wlanServiceRecord->iWLanSSID.IsNull() ) + if ( !clientWlanServiceRecord->iRecordTag.IsNull() ) { - iWlanServiceRecord->iWLanSSID.SetL( wlanServiceRecord->iWLanSSID ); + iWlanServiceRecord->iRecordTag.SetL( + clientWlanServiceRecord->iRecordTag ); + } + if ( !clientWlanServiceRecord->iRecordName.IsNull() ) + { + iWlanServiceRecord->iRecordName.SetL( + clientWlanServiceRecord->iRecordName ); } - if ( !wlanServiceRecord->iWLanUsedSSID.IsNull() ) + if ( !clientWlanServiceRecord->iWlanServiceId.IsNull() ) { - iWlanServiceRecord->iWLanUsedSSID.SetL( wlanServiceRecord->iWLanUsedSSID ); + iWlanServiceRecord->iWlanServiceId.SetL( + clientWlanServiceRecord->iWlanServiceId ); } - if ( !wlanServiceRecord->iWLanWepKey1.IsNull() ) + if ( !clientWlanServiceRecord->iWlanConnMode.IsNull() ) { - iWlanServiceRecord->iWLanWepKey1.SetL( wlanServiceRecord->iWLanWepKey1 ); + iWlanServiceRecord->iWlanConnMode.SetL( + clientWlanServiceRecord->iWlanConnMode ); + } + if ( !clientWlanServiceRecord->iWLanSSID.IsNull() ) + { + iWlanServiceRecord->iWLanSSID.SetL( + clientWlanServiceRecord->iWLanSSID ); } - if ( !wlanServiceRecord->iWLanWepKey2.IsNull() ) + if ( !clientWlanServiceRecord->iWLanUsedSSID.IsNull() ) { - iWlanServiceRecord->iWLanWepKey2.SetL( wlanServiceRecord->iWLanWepKey2 ); + iWlanServiceRecord->iWLanUsedSSID.SetL( + clientWlanServiceRecord->iWLanUsedSSID ); } - if ( !wlanServiceRecord->iWLanWepKey3.IsNull() ) + if ( !clientWlanServiceRecord->iWLanWepKey1.IsNull() ) { - iWlanServiceRecord->iWLanWepKey3.SetL( wlanServiceRecord->iWLanWepKey3 ); + iWlanServiceRecord->iWLanWepKey1.SetL( + clientWlanServiceRecord->iWLanWepKey1 ); } - if ( !wlanServiceRecord->iWLanWepKey4.IsNull() ) + if ( !clientWlanServiceRecord->iWLanWepKey2.IsNull() ) { - iWlanServiceRecord->iWLanWepKey4.SetL( wlanServiceRecord->iWLanWepKey4 ); + iWlanServiceRecord->iWLanWepKey2.SetL( + clientWlanServiceRecord->iWLanWepKey2 ); } - if ( !wlanServiceRecord->iWlanWepIndex.IsNull() ) + if ( !clientWlanServiceRecord->iWLanWepKey3.IsNull() ) { - iWlanServiceRecord->iWlanWepIndex.SetL( wlanServiceRecord->iWlanWepIndex ); + iWlanServiceRecord->iWLanWepKey3.SetL( + clientWlanServiceRecord->iWLanWepKey3 ); } - if ( !wlanServiceRecord->iWlanSecMode.IsNull() ) + if ( !clientWlanServiceRecord->iWLanWepKey4.IsNull() ) { - iWlanServiceRecord->iWlanSecMode.SetL( wlanServiceRecord->iWlanSecMode ); + iWlanServiceRecord->iWLanWepKey4.SetL( + clientWlanServiceRecord->iWLanWepKey4 ); } - if ( !wlanServiceRecord->iWlanAuthMode.IsNull() ) + if ( !clientWlanServiceRecord->iWlanWepIndex.IsNull() ) { - iWlanServiceRecord->iWlanAuthMode.SetL( wlanServiceRecord->iWlanAuthMode ); + iWlanServiceRecord->iWlanWepIndex.SetL( + clientWlanServiceRecord->iWlanWepIndex ); } - if ( !wlanServiceRecord->iWlanEnableWpaPsk.IsNull() ) + if ( !clientWlanServiceRecord->iWlanSecMode.IsNull() ) + { + iWlanServiceRecord->iWlanSecMode.SetL( + clientWlanServiceRecord->iWlanSecMode ); + } + if ( !clientWlanServiceRecord->iWlanAuthMode.IsNull() ) { - iWlanServiceRecord->iWlanEnableWpaPsk.SetL( wlanServiceRecord->iWlanEnableWpaPsk ); - } - if ( !wlanServiceRecord->iWLanWpaPreSharedKey.IsNull() ) - { - iWlanServiceRecord->iWLanWpaPreSharedKey.SetL( wlanServiceRecord->iWLanWpaPreSharedKey ); + iWlanServiceRecord->iWlanAuthMode.SetL( + clientWlanServiceRecord->iWlanAuthMode ); } - if ( !wlanServiceRecord->iWlanWpaKeyLength.IsNull() ) + if ( !clientWlanServiceRecord->iWlanEnableWpaPsk.IsNull() ) { - iWlanServiceRecord->iWlanWpaKeyLength.SetL( wlanServiceRecord->iWlanWpaKeyLength ); + iWlanServiceRecord->iWlanEnableWpaPsk.SetL( + clientWlanServiceRecord->iWlanEnableWpaPsk ); } - if ( !wlanServiceRecord->iWLanEaps.IsNull() ) + if ( !clientWlanServiceRecord->iWLanWpaPreSharedKey.IsNull() ) + { + iWlanServiceRecord->iWLanWpaPreSharedKey.SetL( + clientWlanServiceRecord->iWLanWpaPreSharedKey ); + } + if ( !clientWlanServiceRecord->iWlanWpaKeyLength.IsNull() ) { - iWlanServiceRecord->iWLanEaps.SetL( wlanServiceRecord->iWLanEaps ); + iWlanServiceRecord->iWlanWpaKeyLength.SetL( + clientWlanServiceRecord->iWlanWpaKeyLength ); } - if ( !wlanServiceRecord->iWlanScanSSID.IsNull() ) + if ( !clientWlanServiceRecord->iWLanEaps.IsNull() ) { - iWlanServiceRecord->iWlanScanSSID.SetL( wlanServiceRecord->iWlanScanSSID ); + iWlanServiceRecord->iWLanEaps.SetL( + clientWlanServiceRecord->iWLanEaps ); } - if ( !wlanServiceRecord->iWlanChannelID.IsNull() ) + if ( !clientWlanServiceRecord->iWlanScanSSID.IsNull() ) { - iWlanServiceRecord->iWlanChannelID.SetL( wlanServiceRecord->iWlanChannelID ); + iWlanServiceRecord->iWlanScanSSID.SetL( + clientWlanServiceRecord->iWlanScanSSID ); } - if ( !wlanServiceRecord->iWlanFormatKey1.IsNull() ) + if ( !clientWlanServiceRecord->iWlanChannelID.IsNull() ) + { + iWlanServiceRecord->iWlanChannelID.SetL( + clientWlanServiceRecord->iWlanChannelID ); + } + if ( !clientWlanServiceRecord->iWlanFormatKey1.IsNull() ) { - iWlanServiceRecord->iWlanFormatKey1.SetL( wlanServiceRecord->iWlanFormatKey1 ); - } - if ( !wlanServiceRecord->iWlanFormatKey2.IsNull() ) - { - iWlanServiceRecord->iWlanFormatKey2.SetL( wlanServiceRecord->iWlanFormatKey2 ); + iWlanServiceRecord->iWlanFormatKey1.SetL( + clientWlanServiceRecord->iWlanFormatKey1 ); } - if ( !wlanServiceRecord->iWlanFormatKey3.IsNull() ) + if ( !clientWlanServiceRecord->iWlanFormatKey2.IsNull() ) { - iWlanServiceRecord->iWlanFormatKey3.SetL( wlanServiceRecord->iWlanFormatKey3 ); + iWlanServiceRecord->iWlanFormatKey2.SetL( + clientWlanServiceRecord->iWlanFormatKey2 ); } - if ( !wlanServiceRecord->iWlanFormatKey4.IsNull() ) + if ( !clientWlanServiceRecord->iWlanFormatKey3.IsNull() ) + { + iWlanServiceRecord->iWlanFormatKey3.SetL( + clientWlanServiceRecord->iWlanFormatKey3 ); + } + if ( !clientWlanServiceRecord->iWlanFormatKey4.IsNull() ) { - iWlanServiceRecord->iWlanFormatKey4.SetL( wlanServiceRecord->iWlanFormatKey4 ); + iWlanServiceRecord->iWlanFormatKey4.SetL( + clientWlanServiceRecord->iWlanFormatKey4 ); } - if ( !wlanServiceRecord->iWlanAllowSSIDRoaming.IsNull() ) + if ( !clientWlanServiceRecord->iWlanAllowSSIDRoaming.IsNull() ) { - iWlanServiceRecord->iWlanAllowSSIDRoaming.SetL( wlanServiceRecord->iWlanAllowSSIDRoaming ); + iWlanServiceRecord->iWlanAllowSSIDRoaming.SetL( + clientWlanServiceRecord->iWlanAllowSSIDRoaming ); } - if ( !wlanServiceRecord->iWLanEnabledEaps.IsNull() ) + if ( !clientWlanServiceRecord->iWLanEnabledEaps.IsNull() ) { - iWlanServiceRecord->iWLanEnabledEaps.SetL( wlanServiceRecord->iWLanEnabledEaps ); + iWlanServiceRecord->iWLanEnabledEaps.SetL( + clientWlanServiceRecord->iWLanEnabledEaps ); } - if ( !wlanServiceRecord->iWLanDisabledEaps.IsNull() ) + if ( !clientWlanServiceRecord->iWLanDisabledEaps.IsNull() ) { - iWlanServiceRecord->iWLanDisabledEaps.SetL( wlanServiceRecord->iWLanDisabledEaps ); + iWlanServiceRecord->iWLanDisabledEaps.SetL( + clientWlanServiceRecord->iWLanDisabledEaps ); } + iWlanServiceRecord->SetElementId( clientWlanServiceRecord->ElementId() ); + if ( !iWlanServiceRecord->RecordId() ) { iWlanServiceRecord->SetRecordId( KCDNewRecordRequest ); iWlanServiceRecord->StoreL( iSession ); - wlanServiceRecord->SetElementId( iWlanServiceRecord->ElementId() ); + + // Update received element ID to client's copy too. + clientWlanServiceRecord->SetElementId( iWlanServiceRecord->ElementId() ); } else { @@ -1729,7 +1792,7 @@ if ( !iWlanServiceRecord ) { - // IAP not yet in CommDat + // IAP not yet in CommsDat. GetDefaultWlanServiceRecordL( aRecordArray ); } else @@ -1738,7 +1801,6 @@ CleanupStack::PushL( wlanServiceRecord ); CopyWlanServiceRecordL( iWlanServiceRecord, wlanServiceRecord ); wlanServiceRecord->SetElementId( iWlanServiceRecord->ElementId() ); - wlanServiceRecord->iWlanServiceId.SetL( iWlanServiceRecord->iWlanServiceId ); aRecordArray.AppendL( wlanServiceRecord ); CleanupStack::Pop( wlanServiceRecord ); } @@ -1754,11 +1816,120 @@ { OstTraceFunctionEntry0( CCMPLUGINWLAN_COPYSERVICERECORDL_ENTRY ); - __ASSERT_DEBUG( iServiceRecord != NULL, User::Leave( KErrNotFound )); + // New service record to be returned. + CCDRecordBase* serviceRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) ); + CleanupStack::PushL( serviceRecord ); + + CCDLANServiceRecord* tempServiceRecordPtrToNew = + static_cast( serviceRecord ); + + // CommsDat version of service record. + CCDLANServiceRecord* origServiceRecord = + static_cast( iServiceRecord ); - CCDRecordBase* serviceRecord = - static_cast( - CCDRecordBase::CreateCopyRecordL( *iServiceRecord ) ); + if ( !origServiceRecord->iRecordTag.IsNull() ) + { + tempServiceRecordPtrToNew->iRecordTag.SetL( + origServiceRecord->iRecordTag ); + } + if ( !origServiceRecord->iRecordName.IsNull() ) + { + tempServiceRecordPtrToNew->iRecordName.SetL( + origServiceRecord->iRecordName ); + } + if ( !origServiceRecord->iServiceEnableLlmnr.IsNull() ) + { + tempServiceRecordPtrToNew->iServiceEnableLlmnr.SetL( + origServiceRecord->iServiceEnableLlmnr ); + } + if ( !origServiceRecord->iIfNetworks.IsNull() ) + { + tempServiceRecordPtrToNew->iIfNetworks.SetL( + origServiceRecord->iIfNetworks ); + } + if ( !origServiceRecord->iIpNetmask.IsNull() ) + { + tempServiceRecordPtrToNew->iIpNetmask.SetL( + origServiceRecord->iIpNetmask ); + } + if ( !origServiceRecord->iIpGateway.IsNull() ) + { + tempServiceRecordPtrToNew->iIpGateway.SetL( + origServiceRecord->iIpGateway ); + } + if ( !origServiceRecord->iIpAddrFromServer.IsNull() ) + { + tempServiceRecordPtrToNew->iIpAddrFromServer.SetL( + origServiceRecord->iIpAddrFromServer ); + } + if ( !origServiceRecord->iIpAddr.IsNull() ) + { + tempServiceRecordPtrToNew->iIpAddr.SetL( + origServiceRecord->iIpAddr ); + } + if ( !origServiceRecord->iIpDnsAddrFromServer.IsNull() ) + { + tempServiceRecordPtrToNew->iIpDnsAddrFromServer.SetL( + origServiceRecord->iIpDnsAddrFromServer ); + } + if ( !origServiceRecord->iIpNameServer1.IsNull() ) + { + tempServiceRecordPtrToNew->iIpNameServer1.SetL( + origServiceRecord->iIpNameServer1 ); + } + if ( !origServiceRecord->iIpNameServer2.IsNull() ) + { + tempServiceRecordPtrToNew->iIpNameServer2.SetL( + origServiceRecord->iIpNameServer2 ); + } + if ( !origServiceRecord->iIp6DnsAddrFromServer.IsNull() ) + { + tempServiceRecordPtrToNew->iIp6DnsAddrFromServer.SetL( + origServiceRecord->iIp6DnsAddrFromServer ); + } + if ( !origServiceRecord->iIp6NameServer1.IsNull() ) + { + tempServiceRecordPtrToNew->iIp6NameServer1.SetL( + origServiceRecord->iIp6NameServer1 ); + } + if ( !origServiceRecord->iIp6NameServer2.IsNull() ) + { + tempServiceRecordPtrToNew->iIp6NameServer2.SetL( + origServiceRecord->iIp6NameServer2 ); + } + if ( !origServiceRecord->iIpAddrLeaseValidFrom.IsNull() ) + { + tempServiceRecordPtrToNew->iIpAddrLeaseValidFrom.SetL( + origServiceRecord->iIpAddrLeaseValidFrom ); + } + if ( !origServiceRecord->iIpAddrLeaseValidTo.IsNull() ) + { + tempServiceRecordPtrToNew->iIpAddrLeaseValidTo.SetL( + origServiceRecord->iIpAddrLeaseValidTo ); + } + if ( !origServiceRecord->iConfigDaemonManagerName.IsNull() ) + { + tempServiceRecordPtrToNew->iConfigDaemonManagerName.SetL( + origServiceRecord->iConfigDaemonManagerName ); + } + if ( !origServiceRecord->iConfigDaemonName.IsNull() ) + { + tempServiceRecordPtrToNew->iConfigDaemonName.SetL( + origServiceRecord->iConfigDaemonName ); + } + if ( !origServiceRecord->iServiceExtensionTableName.IsNull() ) + { + tempServiceRecordPtrToNew->iServiceExtensionTableName.SetL( + origServiceRecord->iServiceExtensionTableName ); + } + if ( !origServiceRecord->iServiceExtensionTableRecordId.IsNull() ) + { + tempServiceRecordPtrToNew->iServiceExtensionTableRecordId.SetL( + origServiceRecord->iServiceExtensionTableRecordId ); + } + + CleanupStack::Pop( serviceRecord ); OstTraceFunctionExit0( CCMPLUGINWLAN_COPYSERVICERECORDL_EXIT ); return serviceRecord; @@ -1897,10 +2068,23 @@ User::Leave( KErrArgument ); } - aDestRecord->iRecordName.SetL( aSourceRecord->iRecordName ); - aDestRecord->iRecordTag.SetL( aSourceRecord->iRecordTag ); - aDestRecord->iWlanConnMode.SetL( aSourceRecord->iWlanConnMode ); + if ( !aSourceRecord->iRecordTag.IsNull() ) + { + aDestRecord->iRecordTag.SetL( aSourceRecord->iRecordTag ); + } + if ( !aSourceRecord->iRecordName.IsNull() ) + { + aDestRecord->iRecordName.SetL( aSourceRecord->iRecordName ); + } + if ( !aSourceRecord->iWlanServiceId.IsNull() ) + { + aDestRecord->iWlanServiceId.SetL( aSourceRecord->iWlanServiceId ); + } + if ( !aSourceRecord->iWlanConnMode.IsNull() ) + { + aDestRecord->iWlanConnMode.SetL( aSourceRecord->iWlanConnMode ); + } if ( !aSourceRecord->iWLanSSID.IsNull() ) { aDestRecord->iWLanSSID.SetL( aSourceRecord->iWLanSSID ); @@ -2290,9 +2474,10 @@ OstTraceFunctionEntry0( CCMPLUGINWLAN_COPYBEARERRECORDSL_ENTRY ); CCmPluginWlan* plugin = static_cast( aCopyInstance ); - plugin->iWlanServiceRecord = new( ELeave ) CCDWlanServiceRecord ( iWlanTableId ); + plugin->iWlanServiceRecord = new( ELeave ) CCDWlanServiceRecord( iWlanTableId ); CopyWlanServiceRecordL( iWlanServiceRecord, plugin->iWlanServiceRecord ); + plugin->iWlanServiceRecord->iWlanServiceId.SetL( 0 ); plugin->iWAPISupported = iWAPISupported; OstTraceFunctionExit0( CCMPLUGINWLAN_COPYBEARERRECORDSL_EXIT );