cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp
changeset 23 7ec726f93df1
parent 20 9c97ad6591ae
child 27 489cf6208544
--- a/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp	Mon May 03 12:53:07 2010 +0300
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp	Fri May 14 16:15:46 2010 +0300
@@ -778,214 +778,221 @@
     {
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_UPDATESERVICERECORDL_ENTRY );
 
-    // Delete the original record and create a copy from the parameter
+    // Delete the original record and create a copy from the parameter.
     delete iServiceRecord;
     iServiceRecord = NULL;
 
-    CCDWCDMAPacketServiceRecord* serviceRecord =
-            static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
-
     if ( iOutgoing )
         {
-        iServiceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+        iServiceRecord = static_cast<CCDWCDMAPacketServiceRecord*>(
                 CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) );
         }
     else
         {
-        iServiceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+        iServiceRecord = static_cast<CCDWCDMAPacketServiceRecord*>(
                 CCDRecordBase::RecordFactoryL( KCDTIdIncomingGprsRecord ) );
         }
 
     CCDWCDMAPacketServiceRecord* origServiceRecord =
             static_cast<CCDWCDMAPacketServiceRecord*>( iServiceRecord );
 
-    iServiceRecord->SetElementId( serviceRecord->ElementId() );
-    iServiceRecord->iRecordName.SetL( serviceRecord->iRecordName );
-
-    if ( !serviceRecord->iServiceEnableLlmnr.IsNull() )
+    // Client's copy of packet service record.
+    CCDWCDMAPacketServiceRecord* clientServiceRecordCopy =
+            static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    if ( !clientServiceRecordCopy->iRecordTag.IsNull() )
         {
-        origServiceRecord->iServiceEnableLlmnr.SetL( serviceRecord->iServiceEnableLlmnr );
+        origServiceRecord->iRecordTag.SetL( clientServiceRecordCopy->iRecordTag );
         }
-
-    if ( !serviceRecord->iGPRSAPN.IsNull() )
+    if ( !clientServiceRecordCopy->iRecordName.IsNull() )
         {
-        origServiceRecord->iGPRSAPN.SetL( serviceRecord->iGPRSAPN );
+        origServiceRecord->iRecordName.SetL( clientServiceRecordCopy->iRecordName );
         }
-    if ( !serviceRecord->iGPRSPDPType.IsNull() )
+
+    if ( !clientServiceRecordCopy->iServiceEnableLlmnr.IsNull() )
         {
-        origServiceRecord->iGPRSPDPType.SetL( serviceRecord->iGPRSPDPType );
+        origServiceRecord->iServiceEnableLlmnr.SetL( clientServiceRecordCopy->iServiceEnableLlmnr );
         }
-    if ( !serviceRecord->iGPRSPDPAddress.IsNull() )
+
+    if ( !clientServiceRecordCopy->iGPRSAPN.IsNull() )
         {
-        origServiceRecord->iGPRSPDPAddress.SetL( serviceRecord->iGPRSPDPAddress );
+        origServiceRecord->iGPRSAPN.SetL( clientServiceRecordCopy->iGPRSAPN );
         }
-    if ( !serviceRecord->iGPRSReqPrecedence.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSPDPType.IsNull() )
         {
-        origServiceRecord->iGPRSReqPrecedence.SetL( serviceRecord->iGPRSReqPrecedence );
+        origServiceRecord->iGPRSPDPType.SetL( clientServiceRecordCopy->iGPRSPDPType );
         }
-    if ( !serviceRecord->iGPRSReqDelay.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSPDPAddress.IsNull() )
         {
-        origServiceRecord->iGPRSReqDelay.SetL( serviceRecord->iGPRSReqDelay );
+        origServiceRecord->iGPRSPDPAddress.SetL( clientServiceRecordCopy->iGPRSPDPAddress );
         }
-    if ( !serviceRecord->iGPRSReqReliability.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSReqPrecedence.IsNull() )
         {
-        origServiceRecord->iGPRSReqReliability.SetL( serviceRecord->iGPRSReqReliability );
+        origServiceRecord->iGPRSReqPrecedence.SetL( clientServiceRecordCopy->iGPRSReqPrecedence );
         }
-    if ( !serviceRecord->iGPRSReqPeakThroughput.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSReqDelay.IsNull() )
         {
-        origServiceRecord->iGPRSReqPeakThroughput.SetL( serviceRecord->iGPRSReqPeakThroughput );
+        origServiceRecord->iGPRSReqDelay.SetL( clientServiceRecordCopy->iGPRSReqDelay );
         }
-    if ( !serviceRecord->iGPRSReqMeanThroughput.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSReqReliability.IsNull() )
         {
-        origServiceRecord->iGPRSReqMeanThroughput.SetL( serviceRecord->iGPRSReqMeanThroughput );
+        origServiceRecord->iGPRSReqReliability.SetL( clientServiceRecordCopy->iGPRSReqReliability );
         }
-    if ( !serviceRecord->iGPRSMinPrecedence.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSReqPeakThroughput.IsNull() )
         {
-        origServiceRecord->iGPRSMinPrecedence.SetL( serviceRecord->iGPRSMinPrecedence );
+        origServiceRecord->iGPRSReqPeakThroughput.SetL( clientServiceRecordCopy->iGPRSReqPeakThroughput );
         }
-    if ( !serviceRecord->iGPRSMinDelay.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSReqMeanThroughput.IsNull() )
         {
-        origServiceRecord->iGPRSMinDelay.SetL( serviceRecord->iGPRSMinDelay );
+        origServiceRecord->iGPRSReqMeanThroughput.SetL( clientServiceRecordCopy->iGPRSReqMeanThroughput );
         }
-    if ( !serviceRecord->iGPRSMinReliability.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSMinPrecedence.IsNull() )
         {
-        origServiceRecord->iGPRSMinReliability.SetL( serviceRecord->iGPRSMinReliability );
+        origServiceRecord->iGPRSMinPrecedence.SetL( clientServiceRecordCopy->iGPRSMinPrecedence );
         }
-    if ( !serviceRecord->iGPRSMinPeakThroughput.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSMinDelay.IsNull() )
         {
-        origServiceRecord->iGPRSMinPeakThroughput.SetL( serviceRecord->iGPRSMinPeakThroughput );
+        origServiceRecord->iGPRSMinDelay.SetL( clientServiceRecordCopy->iGPRSMinDelay );
         }
-    if ( !serviceRecord->iGPRSMinMeanThroughput.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSMinReliability.IsNull() )
         {
-        origServiceRecord->iGPRSMinMeanThroughput.SetL( serviceRecord->iGPRSMinMeanThroughput );
+        origServiceRecord->iGPRSMinReliability.SetL( clientServiceRecordCopy->iGPRSMinReliability );
         }
-    if ( !serviceRecord->iGPRSDataCompression.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSMinPeakThroughput.IsNull() )
         {
-        origServiceRecord->iGPRSDataCompression.SetL( serviceRecord->iGPRSDataCompression );
+        origServiceRecord->iGPRSMinPeakThroughput.SetL( clientServiceRecordCopy->iGPRSMinPeakThroughput );
         }
-    if ( !serviceRecord->iGPRSHeaderCompression.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSMinMeanThroughput.IsNull() )
         {
-        origServiceRecord->iGPRSHeaderCompression.SetL( serviceRecord->iGPRSHeaderCompression );
+        origServiceRecord->iGPRSMinMeanThroughput.SetL( clientServiceRecordCopy->iGPRSMinMeanThroughput );
         }
-    if ( !serviceRecord->iGPRSUseEdge.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSDataCompression.IsNull() )
         {
-        origServiceRecord->iGPRSUseEdge.SetL( serviceRecord->iGPRSUseEdge );
+        origServiceRecord->iGPRSDataCompression.SetL( clientServiceRecordCopy->iGPRSDataCompression );
         }
-    if ( !serviceRecord->iGPRSAnonymousAccess.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSHeaderCompression.IsNull() )
         {
-        origServiceRecord->iGPRSAnonymousAccess.SetL( serviceRecord->iGPRSAnonymousAccess );
+        origServiceRecord->iGPRSHeaderCompression.SetL( clientServiceRecordCopy->iGPRSHeaderCompression );
         }
-    if ( !serviceRecord->iGPRSIfParams.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSUseEdge.IsNull() )
         {
-        origServiceRecord->iGPRSIfParams.SetL( serviceRecord->iGPRSIfParams );
+        origServiceRecord->iGPRSUseEdge.SetL( clientServiceRecordCopy->iGPRSUseEdge );
         }
-    if ( !serviceRecord->iGPRSIfNetworks.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSAnonymousAccess.IsNull() )
         {
-        origServiceRecord->iGPRSIfNetworks.SetL( serviceRecord->iGPRSIfNetworks );
+        origServiceRecord->iGPRSAnonymousAccess.SetL( clientServiceRecordCopy->iGPRSAnonymousAccess );
         }
-    if ( !serviceRecord->iGPRSIfPromptForAuth.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIfParams.IsNull() )
         {
-        origServiceRecord->iGPRSIfPromptForAuth.SetL( serviceRecord->iGPRSIfPromptForAuth );
+        origServiceRecord->iGPRSIfParams.SetL( clientServiceRecordCopy->iGPRSIfParams );
         }
-    if ( !serviceRecord->iGPRSIfAuthName.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIfNetworks.IsNull() )
         {
-        origServiceRecord->iGPRSIfAuthName.SetL( serviceRecord->iGPRSIfAuthName );
+        origServiceRecord->iGPRSIfNetworks.SetL( clientServiceRecordCopy->iGPRSIfNetworks );
         }
-    if ( !serviceRecord->iGPRSIfAuthPass.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIfPromptForAuth.IsNull() )
         {
-        origServiceRecord->iGPRSIfAuthPass.SetL( serviceRecord->iGPRSIfAuthPass );
+        origServiceRecord->iGPRSIfPromptForAuth.SetL( clientServiceRecordCopy->iGPRSIfPromptForAuth );
         }
-    if ( !serviceRecord->iGPRSIfAuthRetries.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIfAuthName.IsNull() )
         {
-        origServiceRecord->iGPRSIfAuthRetries.SetL( serviceRecord->iGPRSIfAuthRetries );
+        origServiceRecord->iGPRSIfAuthName.SetL( clientServiceRecordCopy->iGPRSIfAuthName );
         }
-    if ( !serviceRecord->iGPRSIPNetMask.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIfAuthPass.IsNull() )
         {
-        origServiceRecord->iGPRSIPNetMask.SetL( serviceRecord->iGPRSIPNetMask );
+        origServiceRecord->iGPRSIfAuthPass.SetL( clientServiceRecordCopy->iGPRSIfAuthPass );
         }
-    if ( !serviceRecord->iGPRSIPGateway.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIfAuthRetries.IsNull() )
         {
-        origServiceRecord->iGPRSIPGateway.SetL( serviceRecord->iGPRSIPGateway );
+        origServiceRecord->iGPRSIfAuthRetries.SetL( clientServiceRecordCopy->iGPRSIfAuthRetries );
         }
-    if ( !serviceRecord->iGPRSIPAddrFromServer.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIPNetMask.IsNull() )
         {
-        origServiceRecord->iGPRSIPAddrFromServer.SetL( serviceRecord->iGPRSIPAddrFromServer );
+        origServiceRecord->iGPRSIPNetMask.SetL( clientServiceRecordCopy->iGPRSIPNetMask );
         }
-    if ( !serviceRecord->iGPRSIPAddr.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIPGateway.IsNull() )
         {
-        origServiceRecord->iGPRSIPAddr.SetL( serviceRecord->iGPRSIPAddr );
+        origServiceRecord->iGPRSIPGateway.SetL( clientServiceRecordCopy->iGPRSIPGateway );
         }
-    if ( !serviceRecord->iGPRSIPDNSAddrFromServer.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIPAddrFromServer.IsNull() )
         {
-        origServiceRecord->iGPRSIPDNSAddrFromServer.SetL( serviceRecord->iGPRSIPDNSAddrFromServer );
+        origServiceRecord->iGPRSIPAddrFromServer.SetL( clientServiceRecordCopy->iGPRSIPAddrFromServer );
         }
-    if ( !serviceRecord->iGPRSIPNameServer1.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIPAddr.IsNull() )
         {
-        origServiceRecord->iGPRSIPNameServer1.SetL( serviceRecord->iGPRSIPNameServer1 );
+        origServiceRecord->iGPRSIPAddr.SetL( clientServiceRecordCopy->iGPRSIPAddr );
         }
-    if ( !serviceRecord->iGPRSIPNameServer2.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIPDNSAddrFromServer.IsNull() )
         {
-        origServiceRecord->iGPRSIPNameServer2.SetL( serviceRecord->iGPRSIPNameServer2 );
+        origServiceRecord->iGPRSIPDNSAddrFromServer.SetL( clientServiceRecordCopy->iGPRSIPDNSAddrFromServer );
         }
-    if ( !serviceRecord->iGPRSIP6DNSAddrFromServer.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIPNameServer1.IsNull() )
         {
-        origServiceRecord->iGPRSIP6DNSAddrFromServer.SetL( serviceRecord->iGPRSIP6DNSAddrFromServer );
+        origServiceRecord->iGPRSIPNameServer1.SetL( clientServiceRecordCopy->iGPRSIPNameServer1 );
         }
-    if ( !serviceRecord->iGPRSIP6NameServer1.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIPNameServer2.IsNull() )
         {
-        origServiceRecord->iGPRSIP6NameServer1.SetL( serviceRecord->iGPRSIP6NameServer1 );
+        origServiceRecord->iGPRSIPNameServer2.SetL( clientServiceRecordCopy->iGPRSIPNameServer2 );
         }
-    if ( !serviceRecord->iGPRSIP6NameServer2.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIP6DNSAddrFromServer.IsNull() )
         {
-        origServiceRecord->iGPRSIP6NameServer2.SetL( serviceRecord->iGPRSIP6NameServer2 );
+        origServiceRecord->iGPRSIP6DNSAddrFromServer.SetL( clientServiceRecordCopy->iGPRSIP6DNSAddrFromServer );
+        }
+    if ( !clientServiceRecordCopy->iGPRSIP6NameServer1.IsNull() )
+        {
+        origServiceRecord->iGPRSIP6NameServer1.SetL( clientServiceRecordCopy->iGPRSIP6NameServer1 );
         }
-    if ( !serviceRecord->iGPRSIPAddrLeaseValidFrom.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIP6NameServer2.IsNull() )
         {
-        origServiceRecord->iGPRSIPAddrLeaseValidFrom.SetL( serviceRecord->iGPRSIPAddrLeaseValidFrom );
+        origServiceRecord->iGPRSIP6NameServer2.SetL( clientServiceRecordCopy->iGPRSIP6NameServer2 );
         }
-    if ( !serviceRecord->iGPRSIPAddrLeaseValidTo.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIPAddrLeaseValidFrom.IsNull() )
         {
-        origServiceRecord->iGPRSIPAddrLeaseValidTo.SetL( serviceRecord->iGPRSIPAddrLeaseValidTo );
+        origServiceRecord->iGPRSIPAddrLeaseValidFrom.SetL( clientServiceRecordCopy->iGPRSIPAddrLeaseValidFrom );
         }
-    if ( !serviceRecord->iGPRSConfigDaemonManagerName.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSIPAddrLeaseValidTo.IsNull() )
         {
-        origServiceRecord->iGPRSConfigDaemonManagerName.SetL( serviceRecord->iGPRSConfigDaemonManagerName );
+        origServiceRecord->iGPRSIPAddrLeaseValidTo.SetL( clientServiceRecordCopy->iGPRSIPAddrLeaseValidTo );
         }
-    if ( !serviceRecord->iGPRSConfigDaemonName.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSConfigDaemonManagerName.IsNull() )
         {
-        origServiceRecord->iGPRSConfigDaemonName.SetL( serviceRecord->iGPRSConfigDaemonName );
+        origServiceRecord->iGPRSConfigDaemonManagerName.SetL( clientServiceRecordCopy->iGPRSConfigDaemonManagerName );
         }
-    if ( !serviceRecord->iGPRSEnableLCPExtension.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSConfigDaemonName.IsNull() )
         {
-        origServiceRecord->iGPRSEnableLCPExtension.SetL( serviceRecord->iGPRSEnableLCPExtension );
+        origServiceRecord->iGPRSConfigDaemonName.SetL( clientServiceRecordCopy->iGPRSConfigDaemonName );
         }
-    if ( !serviceRecord->iGPRSDisablePlainTextAuth.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSEnableLCPExtension.IsNull() )
         {
-        origServiceRecord->iGPRSDisablePlainTextAuth.SetL( serviceRecord->iGPRSDisablePlainTextAuth );
+        origServiceRecord->iGPRSEnableLCPExtension.SetL( clientServiceRecordCopy->iGPRSEnableLCPExtension );
         }
-    if ( !serviceRecord->iGPRSAPType.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSDisablePlainTextAuth.IsNull() )
         {
-        origServiceRecord->iGPRSAPType.SetL( serviceRecord->iGPRSAPType );
+        origServiceRecord->iGPRSDisablePlainTextAuth.SetL( clientServiceRecordCopy->iGPRSDisablePlainTextAuth );
         }
-    if ( !serviceRecord->iGPRSQOSWarningTimeOut.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSAPType.IsNull() )
         {
-        origServiceRecord->iGPRSQOSWarningTimeOut.SetL( serviceRecord->iGPRSQOSWarningTimeOut );
+        origServiceRecord->iGPRSAPType.SetL( clientServiceRecordCopy->iGPRSAPType );
         }
-    if ( !serviceRecord->iGPRSR5DataCompression.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSQOSWarningTimeOut.IsNull() )
         {
-        origServiceRecord->iGPRSR5DataCompression.SetL( serviceRecord->iGPRSR5DataCompression );
+        origServiceRecord->iGPRSQOSWarningTimeOut.SetL( clientServiceRecordCopy->iGPRSQOSWarningTimeOut );
         }
-    if ( !serviceRecord->iGPRSR5HeaderCompression.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSR5DataCompression.IsNull() )
         {
-        origServiceRecord->iGPRSR5HeaderCompression.SetL( serviceRecord->iGPRSR5HeaderCompression );
+        origServiceRecord->iGPRSR5DataCompression.SetL( clientServiceRecordCopy->iGPRSR5DataCompression );
         }
-    if ( !serviceRecord->iGPRSPacketFlowIdentifier.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSR5HeaderCompression.IsNull() )
         {
-        origServiceRecord->iGPRSPacketFlowIdentifier.SetL( serviceRecord->iGPRSPacketFlowIdentifier );
+        origServiceRecord->iGPRSR5HeaderCompression.SetL( clientServiceRecordCopy->iGPRSR5HeaderCompression );
         }
-    if ( !serviceRecord->iGPRSUmtsGprsRelease.IsNull() )
+    if ( !clientServiceRecordCopy->iGPRSPacketFlowIdentifier.IsNull() )
         {
-        origServiceRecord->iGPRSUmtsGprsRelease.SetL( serviceRecord->iGPRSUmtsGprsRelease );
+        origServiceRecord->iGPRSPacketFlowIdentifier.SetL( clientServiceRecordCopy->iGPRSPacketFlowIdentifier );
+        }
+    if ( !clientServiceRecordCopy->iGPRSUmtsGprsRelease.IsNull() )
+        {
+        origServiceRecord->iGPRSUmtsGprsRelease.SetL( clientServiceRecordCopy->iGPRSUmtsGprsRelease );
         }
 
     if ( iPacketDataQoSRecord )
@@ -993,15 +1000,19 @@
         origServiceRecord->iUmtsR99QoSAndOnTable = iPacketDataQoSRecord->RecordId();
         }
 
-    if ( !iServiceRecord->RecordId() )
+    origServiceRecord->SetElementId( clientServiceRecordCopy->ElementId() );
+
+    if ( !origServiceRecord->RecordId() )
         {
-        iServiceRecord->SetRecordId( KCDNewRecordRequest );
-        iServiceRecord->StoreL( iSession );
-        serviceRecord->SetElementId( iServiceRecord->ElementId() );
+        origServiceRecord->SetRecordId( KCDNewRecordRequest );
+        origServiceRecord->StoreL( iSession );
+
+        // Update received element ID to client's copy too.
+        clientServiceRecordCopy->SetElementId( origServiceRecord->ElementId() );
         }
     else
         {
-        iServiceRecord->ModifyL( iSession );
+        origServiceRecord->ModifyL( iSession );
         }
 
     OstTraceFunctionExit0( CCMPLUGINPACKETDATA_UPDATESERVICERECORDL_EXIT );
@@ -1034,7 +1045,7 @@
         iPacketDataQoSRecord->StoreL( iSession );
         packetDataQoSRecord->SetElementId( iPacketDataQoSRecord->ElementId() );
 
-        // Set service record to point to QoS record
+        // Set service record to point to QoS record.
         ServiceRecord().iUmtsR99QoSAndOnTable = iPacketDataQoSRecord->RecordId();
         ServiceRecord().ModifyL( iSession );
 
@@ -1560,14 +1571,14 @@
 // ---------------------------------------------------------------------------
 //
 TBool CCmPluginPacketData::GetBearerBoolAttributeL( TUint32 aAttribute,
-                                         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
-                                         RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
     {
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERBOOLATTRIBUTEL_ENTRY );
 
     TBool retVal( EFalse );
 
-    switch( aAttribute )
+    switch ( aAttribute )
         {
         case EPacketDataOutGoing:
             {
@@ -1577,7 +1588,7 @@
         case ECmCoverage:
             {
 #ifndef __WINS__
-            CCmPDCoverageCheck* coverage = new (ELeave) CCmPDCoverageCheck;
+            CCmPDCoverageCheck* coverage = new( ELeave ) CCmPDCoverageCheck;
             CleanupStack::PushL( coverage );
 
             retVal = coverage->IsThereCoverageL();
@@ -1605,86 +1616,86 @@
             break;
         case EPacketDataDataCompression:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSDataCompression;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iGPRSDataCompression;
             }
             break;
         case EPacketDataHeaderCompression:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSHeaderCompression;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iGPRSHeaderCompression;
             }
             break;
         case EPacketDataUseEdge:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSUseEdge;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iGPRSUseEdge;
             }
             break;
         case EPacketDataAnonymousAccess:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSAnonymousAccess;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iGPRSAnonymousAccess;
             }
             break;
         case ECmIFPromptForAuth:
         case EPacketDataIFPromptForAuth:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSIfPromptForAuth;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iGPRSIfPromptForAuth;
             }
             break;
         case ECmIPAddFromServer:
         case EPacketDataIPAddrFromServer:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSIPAddrFromServer;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iGPRSIPAddrFromServer;
             }
             break;
         case ECmIPDNSAddrFromServer:
         case EPacketDataIPDNSAddrFromServer:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSIPDNSAddrFromServer;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iGPRSIPDNSAddrFromServer;
             }
             break;
         case ECmIP6DNSAddrFromServer:
         case EPacketDataIPIP6DNSAddrFromServer:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSIP6DNSAddrFromServer;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iGPRSIP6DNSAddrFromServer;
             }
             break;
         case ECmEnableLPCExtension:
         case EPacketDataEnableLcpExtension:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSEnableLCPExtension;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iGPRSEnableLCPExtension;
             }
             break;
         case EPacketDataServiceEnableLLMNR:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iServiceEnableLlmnr;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iServiceEnableLlmnr;
             }
             break;
         case ECmDisablePlainTextAuth:
         case EPacketDataDisablePlainTextAuth:
             {
-            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
-                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSDisablePlainTextAuth;
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] )->iGPRSDisablePlainTextAuth;
             }
             break;
         case EGPRSSignallingIndication:
             {
-            retVal = static_cast<CCDUmtsR99QoSAndOnTableRecord*>
-                                ( aBearerSpecRecordArray[KQosRecordIndex] )->iGPRSSignallingIndication;
+            retVal = static_cast<CCDUmtsR99QoSAndOnTableRecord*>(
+                    aBearerSpecRecordArray[KQosRecordIndex] )->iGPRSSignallingIndication;
             }
             break;
         case EGPRS_ImCnSignallingIndication:
             {
-            retVal = static_cast<CCDUmtsR99QoSAndOnTableRecord*>
-                                ( aBearerSpecRecordArray[KQosRecordIndex] )->iGPRS_ImCnSignallingIndication;
+            retVal = static_cast<CCDUmtsR99QoSAndOnTableRecord*>(
+                    aBearerSpecRecordArray[KQosRecordIndex] )->iGPRS_ImCnSignallingIndication;
             }
             break;
         default:
@@ -1695,7 +1706,6 @@
         }
 
     OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERBOOLATTRIBUTEL_EXIT );
-
     return retVal;
     }
 
@@ -1710,8 +1720,8 @@
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERSTRINGATTRIBUTEL_ENTRY );
 
     HBufC* retVal( NULL );
-    if ( ( aAttribute > EPacketDataSpecificAttributes && aAttribute < EGPRSReqTrafficClass )
-            || ( aAttribute > ECmCommonAttributesStart && aAttribute < ECmCommonAttributesEnd ) )
+    if ( ( aAttribute > EPacketDataSpecificAttributes && aAttribute < EGPRSReqTrafficClass ) ||
+            ( aAttribute > ECmCommonAttributesStart && aAttribute < ECmCommonAttributesEnd ) )
         {
         retVal = GetServiceStringAttributeL( aAttribute, aGenRecordArray );
         }
@@ -1729,8 +1739,8 @@
 // ---------------------------------------------------------------------------
 //
 HBufC* CCmPluginPacketData::GetServiceStringAttributeL(
-    TUint32 aAttribute,
-    RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray)
+        TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray )
     {
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETSERVICESTRINGATTRIBUTEL_ENTRY );
 
@@ -1738,158 +1748,107 @@
 
     CCDWCDMAPacketServiceRecord* serviceRecord =
             static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
-    switch( aAttribute )
+    switch ( aAttribute )
         {
         case ECmIFName:
         case EPacketDataAPName:
             {
-            if ( !serviceRecord->iGPRSAPN.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSAPN ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSAPN ).AllocL();
             }
             break;
         case EPacketDataPDPAddress:
             {
-            if ( !serviceRecord->iGPRSPDPAddress.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSPDPAddress ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSPDPAddress ).AllocL();
             }
             break;
         case ECmIFParams:
         case EPacketDataIFParams:
             {
-            if ( !serviceRecord->iGPRSIfParams.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIfParams ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIfParams ).AllocL();
             }
             break;
         case ECmIFNetworks:
         case EPacketDataIFNetworks:
             {
-            if ( !serviceRecord->iGPRSIfNetworks.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIfNetworks ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIfNetworks ).AllocL();
             }
             break;
         case ECmIFAuthName:
         case EPacketDataIFAuthName:
             {
-            if ( !serviceRecord->iGPRSIfAuthName.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIfAuthName ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIfAuthName ).AllocL();
             }
             break;
         case ECmIFAuthPass:
         case EPacketDataIFAuthPass:
             {
-            if ( !serviceRecord->iGPRSIfAuthPass.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIfAuthPass ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIfAuthPass ).AllocL();
             }
             break;
         case ECmIPNetmask:
         case EPacketDataIPNetmask:
             {
-            if ( !serviceRecord->iGPRSIPNetMask.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIPNetMask ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIPNetMask ).AllocL();
             }
             break;
         case ECmIPGateway:
         case EPacketDataIPGateway:
             {
-            if ( !serviceRecord->iGPRSIPGateway.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIPGateway ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIPGateway ).AllocL();
             }
             break;
         case ECmIPAddress:
         case EPacketDataIPAddr:
             {
-            if ( !serviceRecord->iGPRSIPAddr.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIPAddr ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIPAddr ).AllocL();
             }
             break;
         case ECmIPNameServer1:
         case EPacketDataIPNameServer1:
             {
-            if ( !serviceRecord->iGPRSIPNameServer1.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIPNameServer1 ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIPNameServer1 ).AllocL();
             }
             break;
         case ECmIPNameServer2:
         case EPacketDataIPNameServer2:
             {
-            if ( !serviceRecord->iGPRSIPNameServer2.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIPNameServer2 ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIPNameServer2 ).AllocL();
             }
             break;
         case ECmIP6NameServer1:
         case EPacketDataIPIP6NameServer1:
             {
-            if ( !serviceRecord->iGPRSIP6NameServer1.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIP6NameServer1 ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIP6NameServer1 ).AllocL();
             }
             break;
         case ECmIP6NameServer2:
         case EPacketDataIPIP6NameServer2:
             {
-            if ( !serviceRecord->iGPRSIP6NameServer2.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIP6NameServer2 ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIP6NameServer2 ).AllocL();
             }
             break;
         case ECmIPAddrLeaseValidFrom:
         case EPacketDataIPAddrLeaseValidFrom:
             {
-            if ( !serviceRecord->iGPRSIPAddrLeaseValidFrom.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIPAddrLeaseValidFrom ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIPAddrLeaseValidFrom ).AllocL();
             }
             break;
         case ECmIPAddrLeaseValidTo:
         case EPacketDataIPAddrLeaseValidTo:
             {
-            if ( !serviceRecord->iGPRSIPAddrLeaseValidTo.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSIPAddrLeaseValidTo ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSIPAddrLeaseValidTo ).AllocL();
             }
             break;
         case ECmConfigDaemonManagerName:
         case EPacketDataConfigDaemonManagerName:
             {
-            if ( !serviceRecord->iGPRSConfigDaemonManagerName.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSConfigDaemonManagerName ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSConfigDaemonManagerName ).AllocL();
             }
             break;
         case ECmConfigDaemonName:
         case EPacketDataConfigDaemonName:
             {
-            if ( !serviceRecord->iGPRSConfigDaemonName.IsNull() )
-                {
-                retVal = TPtrC( serviceRecord->iGPRSConfigDaemonName ).AllocL();
-                }
+            retVal = TPtrC( serviceRecord->iGPRSConfigDaemonName ).AllocL();
             }
             break;
 
@@ -1901,7 +1860,6 @@
         }
 
     OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETSERVICESTRINGATTRIBUTEL_EXIT );
-
     return retVal;
     }
 
@@ -1910,15 +1868,14 @@
 // ---------------------------------------------------------------------------
 //
 HBufC8* CCmPluginPacketData::GetBearerString8AttributeL( TUint32 /*aAttribute*/,
-                                              RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
-                                              RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+        RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
     {
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERSTRING8ATTRIBUTEL_ENTRY );
 
     User::Leave( KErrNotSupported );
 
     OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERSTRING8ATTRIBUTEL_EXIT );
-
     return NULL;
     }
 
@@ -1926,9 +1883,11 @@
 // CCmPluginPacketData::SetBearerIntAttributeL
 // ---------------------------------------------------------------------------
 //
-void CCmPluginPacketData::SetBearerIntAttributeL( TUint32 aAttribute, TUint32 aValue,
-                                       RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
-                                       RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+void CCmPluginPacketData::SetBearerIntAttributeL(
+        TUint32 aAttribute,
+        TUint32 aValue,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
     {
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETBEARERINTATTRIBUTEL_ENTRY );
 
@@ -1944,6 +1903,7 @@
         {
         User::Leave( KErrNotFound );
         }
+
     OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETBEARERINTATTRIBUTEL_EXIT );
     }
 
@@ -2240,7 +2200,7 @@
     CCDWCDMAPacketServiceRecord* serviceRecord =
                     static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
 
-    switch( aAttribute )
+    switch ( aAttribute )
         {
         case EPacketDataOutGoing:
             {
@@ -2520,7 +2480,7 @@
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOINTL_ENTRY );
 
     TUint32 retVal( 0 );
-    switch( aAttribute )
+    switch ( aAttribute )
         {
         case ECmBearerType:
             {
@@ -2566,7 +2526,7 @@
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOBOOLL_ENTRY );
 
     TBool retVal( EFalse );
-    switch( aAttribute )
+    switch ( aAttribute )
         {
         case ECmCoverage:
             {
@@ -2625,7 +2585,7 @@
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRINGL_ENTRY );
 
     HBufC* retVal( NULL );
-    switch( aAttribute )
+    switch ( aAttribute )
         {
         default:
             {
@@ -2648,18 +2608,16 @@
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRING8L_ENTRY );
 
     HBufC8* retVal( NULL );
-    switch( aAttribute )
+    switch ( aAttribute )
         {
         default:
             {
-
             User::Leave( KErrNotSupported );
             }
-        break;
+            break;
         }
 
     OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRING8L_EXIT );
-
     return retVal;
     }
 
@@ -2672,7 +2630,6 @@
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_PREPARETOCOPYDATAL_ENTRY );
 
     CCmPluginPacketData* plugin = static_cast<CCmPluginPacketData*>( aCopyInstance );
-
     plugin->iOutgoing = iOutgoing;
 
     OstTraceFunctionExit0( CCMPLUGINPACKETDATA_PREPARETOCOPYDATAL_EXIT );
@@ -2686,216 +2643,273 @@
     {
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_COPYSERVICERECORDL_ENTRY );
 
-    __ASSERT_ALWAYS( iServiceRecord != NULL, User::Leave( KErrNotFound ));
-
-    CCDWCDMAPacketServiceRecord* origServiceRecord =
-            static_cast<CCDWCDMAPacketServiceRecord*>( iServiceRecord );
-
-    // New service record
-    CCDWCDMAPacketServiceRecord* serviceRecord = NULL;
+    // New service record to be returned.
+    CCDRecordBase* serviceRecord = NULL;
     if ( iOutgoing )
         {
-        serviceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+        serviceRecord = static_cast<CCDWCDMAPacketServiceRecord*>(
                 CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) );
         }
     else
         {
-        serviceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+        serviceRecord = static_cast<CCDWCDMAPacketServiceRecord*>(
                 CCDRecordBase::RecordFactoryL( KCDTIdIncomingGprsRecord ) );
         }
-
     CleanupStack::PushL( serviceRecord );
 
-    serviceRecord->iRecordName.SetL( origServiceRecord->iRecordName );
+    CCDWCDMAPacketServiceRecord* tempServiceRecordPtrToNew =
+            static_cast<CCDWCDMAPacketServiceRecord*>( serviceRecord );
+
+    // CommsDat version of service record.
+    CCDWCDMAPacketServiceRecord* origServiceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>( iServiceRecord );
+
+    if ( !origServiceRecord->iRecordTag.IsNull() )
+        {
+        tempServiceRecordPtrToNew->iRecordTag.SetL(
+                origServiceRecord->iRecordTag );
+        }
+    if ( !origServiceRecord->iRecordName.IsNull() )
+        {
+        tempServiceRecordPtrToNew->iRecordName.SetL(
+                origServiceRecord->iRecordName );
+        }
 
     if ( !origServiceRecord->iServiceEnableLlmnr.IsNull() )
         {
-        serviceRecord->iServiceEnableLlmnr.SetL( origServiceRecord->iServiceEnableLlmnr );
+        tempServiceRecordPtrToNew->iServiceEnableLlmnr.SetL(
+                origServiceRecord->iServiceEnableLlmnr );
         }
 
     if ( !origServiceRecord->iGPRSAPN.IsNull() )
         {
-        serviceRecord->iGPRSAPN.SetL( origServiceRecord->iGPRSAPN );
+        tempServiceRecordPtrToNew->iGPRSAPN.SetL(
+                origServiceRecord->iGPRSAPN );
         }
     if ( !origServiceRecord->iGPRSPDPType.IsNull() )
         {
-        serviceRecord->iGPRSPDPType.SetL( origServiceRecord->iGPRSPDPType );
+        tempServiceRecordPtrToNew->iGPRSPDPType.SetL(
+                origServiceRecord->iGPRSPDPType );
         }
     if ( !origServiceRecord->iGPRSPDPAddress.IsNull() )
         {
-        serviceRecord->iGPRSPDPAddress.SetL( origServiceRecord->iGPRSPDPAddress );
+        tempServiceRecordPtrToNew->iGPRSPDPAddress.SetL(
+                origServiceRecord->iGPRSPDPAddress );
         }
     if ( !origServiceRecord->iGPRSReqPrecedence.IsNull() )
         {
-        serviceRecord->iGPRSReqPrecedence.SetL( origServiceRecord->iGPRSReqPrecedence );
+        tempServiceRecordPtrToNew->iGPRSReqPrecedence.SetL(
+                origServiceRecord->iGPRSReqPrecedence );
         }
     if ( !origServiceRecord->iGPRSReqDelay.IsNull() )
         {
-        serviceRecord->iGPRSReqDelay.SetL( origServiceRecord->iGPRSReqDelay );
+        tempServiceRecordPtrToNew->iGPRSReqDelay.SetL(
+                origServiceRecord->iGPRSReqDelay );
         }
     if ( !origServiceRecord->iGPRSReqReliability.IsNull() )
         {
-        serviceRecord->iGPRSReqReliability.SetL( origServiceRecord->iGPRSReqReliability );
+        tempServiceRecordPtrToNew->iGPRSReqReliability.SetL(
+                origServiceRecord->iGPRSReqReliability );
         }
     if ( !origServiceRecord->iGPRSReqPeakThroughput.IsNull() )
         {
-        serviceRecord->iGPRSReqPeakThroughput.SetL( origServiceRecord->iGPRSReqPeakThroughput );
+        tempServiceRecordPtrToNew->iGPRSReqPeakThroughput.SetL(
+                origServiceRecord->iGPRSReqPeakThroughput );
         }
     if ( !origServiceRecord->iGPRSReqMeanThroughput.IsNull() )
         {
-        serviceRecord->iGPRSReqMeanThroughput.SetL( origServiceRecord->iGPRSReqMeanThroughput );
+        tempServiceRecordPtrToNew->iGPRSReqMeanThroughput.SetL(
+                origServiceRecord->iGPRSReqMeanThroughput );
         }
     if ( !origServiceRecord->iGPRSMinPrecedence.IsNull() )
         {
-        serviceRecord->iGPRSMinPrecedence.SetL( origServiceRecord->iGPRSMinPrecedence );
+        tempServiceRecordPtrToNew->iGPRSMinPrecedence.SetL(
+                origServiceRecord->iGPRSMinPrecedence );
         }
     if ( !origServiceRecord->iGPRSMinDelay.IsNull() )
         {
-        serviceRecord->iGPRSMinDelay.SetL( origServiceRecord->iGPRSMinDelay );
+        tempServiceRecordPtrToNew->iGPRSMinDelay.SetL(
+                origServiceRecord->iGPRSMinDelay );
         }
     if ( !origServiceRecord->iGPRSMinReliability.IsNull() )
         {
-        serviceRecord->iGPRSMinReliability.SetL( origServiceRecord->iGPRSMinReliability );
+        tempServiceRecordPtrToNew->iGPRSMinReliability.SetL(
+                origServiceRecord->iGPRSMinReliability );
         }
     if ( !origServiceRecord->iGPRSMinPeakThroughput.IsNull() )
         {
-        serviceRecord->iGPRSMinPeakThroughput.SetL( origServiceRecord->iGPRSMinPeakThroughput );
+        tempServiceRecordPtrToNew->iGPRSMinPeakThroughput.SetL(
+                origServiceRecord->iGPRSMinPeakThroughput );
         }
     if ( !origServiceRecord->iGPRSMinMeanThroughput.IsNull() )
         {
-        serviceRecord->iGPRSMinMeanThroughput.SetL( origServiceRecord->iGPRSMinMeanThroughput );
+        tempServiceRecordPtrToNew->iGPRSMinMeanThroughput.SetL(
+                origServiceRecord->iGPRSMinMeanThroughput );
         }
     if ( !origServiceRecord->iGPRSDataCompression.IsNull() )
         {
-        serviceRecord->iGPRSDataCompression.SetL( origServiceRecord->iGPRSDataCompression );
+        tempServiceRecordPtrToNew->iGPRSDataCompression.SetL(
+                origServiceRecord->iGPRSDataCompression );
         }
     if ( !origServiceRecord->iGPRSHeaderCompression.IsNull() )
         {
-        serviceRecord->iGPRSHeaderCompression.SetL( origServiceRecord->iGPRSHeaderCompression );
+        tempServiceRecordPtrToNew->iGPRSHeaderCompression.SetL(
+                origServiceRecord->iGPRSHeaderCompression );
         }
     if ( !origServiceRecord->iGPRSUseEdge.IsNull() )
         {
-        serviceRecord->iGPRSUseEdge.SetL( origServiceRecord->iGPRSUseEdge );
+        tempServiceRecordPtrToNew->iGPRSUseEdge.SetL(
+                origServiceRecord->iGPRSUseEdge );
         }
     if ( !origServiceRecord->iGPRSAnonymousAccess.IsNull() )
         {
-        serviceRecord->iGPRSAnonymousAccess.SetL( origServiceRecord->iGPRSAnonymousAccess );
+        tempServiceRecordPtrToNew->iGPRSAnonymousAccess.SetL(
+                origServiceRecord->iGPRSAnonymousAccess );
         }
     if ( !origServiceRecord->iGPRSIfParams.IsNull() )
         {
-        serviceRecord->iGPRSIfParams.SetL( origServiceRecord->iGPRSIfParams );
+        tempServiceRecordPtrToNew->iGPRSIfParams.SetL(
+                origServiceRecord->iGPRSIfParams );
         }
     if ( !origServiceRecord->iGPRSIfNetworks.IsNull() )
         {
-        serviceRecord->iGPRSIfNetworks.SetL( origServiceRecord->iGPRSIfNetworks );
+        tempServiceRecordPtrToNew->iGPRSIfNetworks.SetL(
+                origServiceRecord->iGPRSIfNetworks );
         }
     if ( !origServiceRecord->iGPRSIfPromptForAuth.IsNull() )
         {
-        serviceRecord->iGPRSIfPromptForAuth.SetL( origServiceRecord->iGPRSIfPromptForAuth );
+        tempServiceRecordPtrToNew->iGPRSIfPromptForAuth.SetL(
+                origServiceRecord->iGPRSIfPromptForAuth );
         }
     if ( !origServiceRecord->iGPRSIfAuthName.IsNull() )
         {
-        serviceRecord->iGPRSIfAuthName.SetL( origServiceRecord->iGPRSIfAuthName );
+        tempServiceRecordPtrToNew->iGPRSIfAuthName.SetL(
+                origServiceRecord->iGPRSIfAuthName );
         }
     if ( !origServiceRecord->iGPRSIfAuthPass.IsNull() )
         {
-        serviceRecord->iGPRSIfAuthPass.SetL( origServiceRecord->iGPRSIfAuthPass );
+        tempServiceRecordPtrToNew->iGPRSIfAuthPass.SetL(
+                origServiceRecord->iGPRSIfAuthPass );
         }
     if ( !origServiceRecord->iGPRSIfAuthRetries.IsNull() )
         {
-        serviceRecord->iGPRSIfAuthRetries.SetL( origServiceRecord->iGPRSIfAuthRetries );
+        tempServiceRecordPtrToNew->iGPRSIfAuthRetries.SetL(
+                origServiceRecord->iGPRSIfAuthRetries );
         }
     if ( !origServiceRecord->iGPRSIPNetMask.IsNull() )
         {
-        serviceRecord->iGPRSIPNetMask.SetL( origServiceRecord->iGPRSIPNetMask );
+        tempServiceRecordPtrToNew->iGPRSIPNetMask.SetL(
+                origServiceRecord->iGPRSIPNetMask );
         }
     if ( !origServiceRecord->iGPRSIPGateway.IsNull() )
         {
-        serviceRecord->iGPRSIPGateway.SetL( origServiceRecord->iGPRSIPGateway );
+        tempServiceRecordPtrToNew->iGPRSIPGateway.SetL(
+                origServiceRecord->iGPRSIPGateway );
         }
     if ( !origServiceRecord->iGPRSIPAddrFromServer.IsNull() )
         {
-        serviceRecord->iGPRSIPAddrFromServer.SetL( origServiceRecord->iGPRSIPAddrFromServer );
+        tempServiceRecordPtrToNew->iGPRSIPAddrFromServer.SetL(
+                origServiceRecord->iGPRSIPAddrFromServer );
         }
     if ( !origServiceRecord->iGPRSIPAddr.IsNull() )
         {
-        serviceRecord->iGPRSIPAddr.SetL( origServiceRecord->iGPRSIPAddr );
+        tempServiceRecordPtrToNew->iGPRSIPAddr.SetL(
+                origServiceRecord->iGPRSIPAddr );
         }
     if ( !origServiceRecord->iGPRSIPDNSAddrFromServer.IsNull() )
         {
-        serviceRecord->iGPRSIPDNSAddrFromServer.SetL( origServiceRecord->iGPRSIPDNSAddrFromServer );
+        tempServiceRecordPtrToNew->iGPRSIPDNSAddrFromServer.SetL(
+                origServiceRecord->iGPRSIPDNSAddrFromServer );
         }
     if ( !origServiceRecord->iGPRSIPNameServer1.IsNull() )
         {
-        serviceRecord->iGPRSIPNameServer1.SetL( origServiceRecord->iGPRSIPNameServer1 );
+        tempServiceRecordPtrToNew->iGPRSIPNameServer1.SetL(
+                origServiceRecord->iGPRSIPNameServer1 );
         }
     if ( !origServiceRecord->iGPRSIPNameServer2.IsNull() )
         {
-        serviceRecord->iGPRSIPNameServer2.SetL( origServiceRecord->iGPRSIPNameServer2 );
+        tempServiceRecordPtrToNew->iGPRSIPNameServer2.SetL(
+                origServiceRecord->iGPRSIPNameServer2 );
         }
     if ( !origServiceRecord->iGPRSIP6DNSAddrFromServer.IsNull() )
         {
-        serviceRecord->iGPRSIP6DNSAddrFromServer.SetL( origServiceRecord->iGPRSIP6DNSAddrFromServer );
+        tempServiceRecordPtrToNew->iGPRSIP6DNSAddrFromServer.SetL(
+                origServiceRecord->iGPRSIP6DNSAddrFromServer );
         }
     if ( !origServiceRecord->iGPRSIP6NameServer1.IsNull() )
         {
-        serviceRecord->iGPRSIP6NameServer1.SetL( origServiceRecord->iGPRSIP6NameServer1 );
+        tempServiceRecordPtrToNew->iGPRSIP6NameServer1.SetL(
+                origServiceRecord->iGPRSIP6NameServer1 );
         }
     if ( !origServiceRecord->iGPRSIP6NameServer2.IsNull() )
         {
-        serviceRecord->iGPRSIP6NameServer2.SetL( origServiceRecord->iGPRSIP6NameServer2 );
+        tempServiceRecordPtrToNew->iGPRSIP6NameServer2.SetL(
+                origServiceRecord->iGPRSIP6NameServer2 );
         }
     if ( !origServiceRecord->iGPRSIPAddrLeaseValidFrom.IsNull() )
         {
-        serviceRecord->iGPRSIPAddrLeaseValidFrom.SetL( origServiceRecord->iGPRSIPAddrLeaseValidFrom );
+        tempServiceRecordPtrToNew->iGPRSIPAddrLeaseValidFrom.SetL(
+                origServiceRecord->iGPRSIPAddrLeaseValidFrom );
         }
     if ( !origServiceRecord->iGPRSIPAddrLeaseValidTo.IsNull() )
         {
-        serviceRecord->iGPRSIPAddrLeaseValidTo.SetL( origServiceRecord->iGPRSIPAddrLeaseValidTo );
+        tempServiceRecordPtrToNew->iGPRSIPAddrLeaseValidTo.SetL(
+                origServiceRecord->iGPRSIPAddrLeaseValidTo );
         }
     if ( !origServiceRecord->iGPRSConfigDaemonManagerName.IsNull() )
         {
-        serviceRecord->iGPRSConfigDaemonManagerName.SetL( origServiceRecord->iGPRSConfigDaemonManagerName );
+        tempServiceRecordPtrToNew->iGPRSConfigDaemonManagerName.SetL(
+                origServiceRecord->iGPRSConfigDaemonManagerName );
         }
     if ( !origServiceRecord->iGPRSConfigDaemonName.IsNull() )
         {
-        serviceRecord->iGPRSConfigDaemonName.SetL( origServiceRecord->iGPRSConfigDaemonName );
+        tempServiceRecordPtrToNew->iGPRSConfigDaemonName.SetL(
+                origServiceRecord->iGPRSConfigDaemonName );
         }
     if ( !origServiceRecord->iGPRSEnableLCPExtension.IsNull() )
         {
-        serviceRecord->iGPRSEnableLCPExtension.SetL( origServiceRecord->iGPRSEnableLCPExtension );
+        tempServiceRecordPtrToNew->iGPRSEnableLCPExtension.SetL(
+                origServiceRecord->iGPRSEnableLCPExtension );
         }
     if ( !origServiceRecord->iGPRSDisablePlainTextAuth.IsNull() )
         {
-        serviceRecord->iGPRSDisablePlainTextAuth.SetL( origServiceRecord->iGPRSDisablePlainTextAuth );
+        tempServiceRecordPtrToNew->iGPRSDisablePlainTextAuth.SetL(
+                origServiceRecord->iGPRSDisablePlainTextAuth );
         }
     if ( !origServiceRecord->iGPRSAPType.IsNull() )
         {
-        serviceRecord->iGPRSAPType.SetL( origServiceRecord->iGPRSAPType );
+        tempServiceRecordPtrToNew->iGPRSAPType.SetL(
+                origServiceRecord->iGPRSAPType );
         }
     if ( !origServiceRecord->iGPRSQOSWarningTimeOut.IsNull() )
         {
-        serviceRecord->iGPRSQOSWarningTimeOut.SetL( origServiceRecord->iGPRSQOSWarningTimeOut );
+        tempServiceRecordPtrToNew->iGPRSQOSWarningTimeOut.SetL(
+                origServiceRecord->iGPRSQOSWarningTimeOut );
         }
     if ( !origServiceRecord->iUmtsR99QoSAndOnTable.IsNull() )
         {
-        serviceRecord->iUmtsR99QoSAndOnTable.SetL( origServiceRecord->iUmtsR99QoSAndOnTable );
+        tempServiceRecordPtrToNew->iUmtsR99QoSAndOnTable.SetL(
+                origServiceRecord->iUmtsR99QoSAndOnTable );
         }
     if ( !origServiceRecord->iGPRSR5DataCompression.IsNull() )
         {
-        serviceRecord->iGPRSR5DataCompression.SetL( origServiceRecord->iGPRSR5DataCompression );
+        tempServiceRecordPtrToNew->iGPRSR5DataCompression.SetL(
+                origServiceRecord->iGPRSR5DataCompression );
         }
     if ( !origServiceRecord->iGPRSR5HeaderCompression.IsNull() )
         {
-        serviceRecord->iGPRSR5HeaderCompression.SetL( origServiceRecord->iGPRSR5HeaderCompression );
+        tempServiceRecordPtrToNew->iGPRSR5HeaderCompression.SetL(
+                origServiceRecord->iGPRSR5HeaderCompression );
         }
     if ( !origServiceRecord->iGPRSPacketFlowIdentifier.IsNull() )
         {
-        serviceRecord->iGPRSPacketFlowIdentifier.SetL( origServiceRecord->iGPRSPacketFlowIdentifier );
+        tempServiceRecordPtrToNew->iGPRSPacketFlowIdentifier.SetL(
+                origServiceRecord->iGPRSPacketFlowIdentifier );
         }
     if ( !origServiceRecord->iGPRSUmtsGprsRelease.IsNull() )
         {
-        serviceRecord->iGPRSUmtsGprsRelease.SetL( origServiceRecord->iGPRSUmtsGprsRelease );
+        tempServiceRecordPtrToNew->iGPRSUmtsGprsRelease.SetL(
+                origServiceRecord->iGPRSUmtsGprsRelease );
         }
 
     CleanupStack::Pop( serviceRecord );
@@ -2934,7 +2948,6 @@
         }
 
     iPacketDataQoSRecord->DeleteL( iSession );
-    iPacketDataQoSRecord = NULL;
 
     OstTraceFunctionExit0( DUP1_CCMPLUGINPACKETDATA_DELETEBEARERRECORDSL_EXIT );
     }