Revision: 201007 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 12 Mar 2010 15:42:09 +0200
branchRCL_3
changeset 8 7117cbf1600a
parent 6 fc8c25e5a2e8
child 9 bddb6d4447db
Revision: 201007 Kit: 201008
commsconfig/cscapplicationui/data/csc.rss
commsconfig/cscapplicationui/group/cscappui.mmp
commsconfig/cscapplicationui/inc/cscappui.h
commsconfig/cscapplicationui/src/cscappui.cpp
commsconfig/cscapplicationui/src/cscserviceview.cpp
commsconfig/cscsettingsui/inc/cscsettingsuimainview.h
commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp
convergedconnectionhandler/cchclientapi/src/cchuiconnectionhandler.cpp
sipvoipprovider/src/svpcontroller.cpp
sipvoipprovider/src/svpsessionbase.cpp
voipplugins/accountcreationplugin/engine/src/acpcontroller.cpp
voipplugins/accountcreationplugin/inc/accountcreationplugin.h
voipplugins/accountcreationplugin/src/accountcreationplugin.cpp
voipplugins/sipconnectionprovider/src/scppresencehandler.cpp
voipplugins/sipconnectionprovider/src/scpservicemanager.cpp
voipplugins/sipmxresolver/src/sipmxresolver.cpp
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/group/voipxmlprocessor.mmp
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmliaphandler.h
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlprocessordefaults.h
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmliaphandler.cpp
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlnatfwhandler.cpp
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlparamhandler.cpp
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlparser.cpp
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlsiphandler.cpp
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlvoiphandler.cpp
--- a/commsconfig/cscapplicationui/data/csc.rss	Fri Feb 19 22:44:34 2010 +0200
+++ b/commsconfig/cscapplicationui/data/csc.rss	Fri Mar 12 15:42:09 2010 +0200
@@ -143,7 +143,7 @@
 RESOURCE AVKON_VIEW r_csc_view_service
     {
     menubar = r_csc_serviceview_menubar;
-    cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
+    cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
     }
 
 //----------------------------------------------------
--- a/commsconfig/cscapplicationui/group/cscappui.mmp	Fri Feb 19 22:44:34 2010 +0200
+++ b/commsconfig/cscapplicationui/group/cscappui.mmp	Fri Mar 12 15:42:09 2010 +0200
@@ -56,6 +56,7 @@
 LIBRARY         cch.lib
 LIBRARY         ecom.lib
 LIBRARY         egul.lib
+LIBRARY         ws32.lib
 LIBRARY         bafl.lib
 LIBRARY         cone.lib 
 LIBRARY         avkon.lib
--- a/commsconfig/cscapplicationui/inc/cscappui.h	Fri Feb 19 22:44:34 2010 +0200
+++ b/commsconfig/cscapplicationui/inc/cscappui.h	Fri Mar 12 15:42:09 2010 +0200
@@ -194,6 +194,13 @@
          * @param aServiceId service id
          */
         void SnapCheckL( TUint aServiceId ) const;
+        
+        /*
+         * Exits GS application if needed
+         *
+         * @since S60 3.2
+         */
+        TBool ExitGSIfParentL();
             
     private: // data
                        
--- a/commsconfig/cscapplicationui/src/cscappui.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/commsconfig/cscapplicationui/src/cscappui.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -29,6 +29,9 @@
 #include <xSPViewServices.h>
 #include <AiwServiceHandler.h>
 #include <mspnotifychangeobserver.h>
+#include <gsfwviewuids.h>
+#include <apgwgnam.h>
+#include <csc.hlp.hrh>
 
 #include "cscappui.h"
 #include "csclogger.h"
@@ -45,6 +48,7 @@
 #include "cscenguiextensionpluginhandler.h"
 
 const TInt KMaxParamLength = 255;
+const TInt KGSChildAppWindowGroupNameLength = 100;
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -190,12 +194,19 @@
     
     switch ( aCommand )
         {
+        case EAknSoftkeyBack:
+            {
+            Exit();
+            break;
+            }
         case EEikCmdExit:
         case EAknSoftkeyExit:
-        case EAknSoftkeyBack:
         case EAknCmdExit:
+            {
+            ExitGSIfParentL();
             Exit();
             break;
+            }
         default:
             break;
         }
@@ -457,3 +468,50 @@
     
     CSCDEBUG( "CCSCAppUi::SnapCheckL - end" );  
     }
+
+// ---------------------------------------------------------------------------
+// Check if GS has to be closed
+// ---------------------------------------------------------------------------
+//
+TBool CCSCAppUi::ExitGSIfParentL()
+    {
+    TBool ret = EFalse;
+    
+    RWsSession ws  = CEikonEnv::Static()->WsSession();
+    TApaTaskList taskList( ws );
+    TApaTask gstask = taskList.FindApp( KUidGS  );
+
+    if ( gstask.Exists() )
+        {
+        TInt gswgid = gstask.WgId();
+        RArray<RWsSession::TWindowGroupChainInfo> wgrp;
+        ws.WindowGroupList( &wgrp );
+        TInt i = 0;
+
+        // Loop window groups, find GS's child app
+        for ( i=0; i < wgrp.Count() ; ++i )
+            {
+            TBuf< KGSChildAppWindowGroupNameLength > name;
+            ws.GetWindowGroupNameFromIdentifier( wgrp[i].iId , name );
+            RWsSession::TWindowGroupChainInfo wginfo = wgrp[i];
+            if ( wginfo.iParentId == gswgid ) // Child of GS found
+                {
+                CApaWindowGroupName* windowName1 =
+                    CApaWindowGroupName::NewLC( ws, wginfo.iId ); // CS:1
+                TUid embeddeeuid;
+                embeddeeuid = windowName1->AppUid();
+
+                // Check if CSC is the child of GS
+                if ( KUidCscHelp == embeddeeuid )
+                    {
+                    ret = ETrue;
+                    gstask.EndTask();
+                    }
+                CleanupStack::PopAndDestroy( windowName1 );  // CS:0
+                }
+            }
+        wgrp.Close();
+        }
+    
+    return ret;
+    }
--- a/commsconfig/cscapplicationui/src/cscserviceview.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/commsconfig/cscapplicationui/src/cscserviceview.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -207,8 +207,10 @@
             break;         
         // Exit menu command.    
         case EAknSoftkeyExit:
+            AppUi()->HandleCommandL( EEikCmdExit );
+            break;           
         case EAknSoftkeyBack:
-            AppUi()->HandleCommandL( EEikCmdExit );
+            AppUi()->HandleCommandL( EAknSoftkeyBack );
             break;
         // Let appui handle other commands.    
         default:
--- a/commsconfig/cscsettingsui/inc/cscsettingsuimainview.h	Fri Feb 19 22:44:34 2010 +0200
+++ b/commsconfig/cscsettingsui/inc/cscsettingsuimainview.h	Fri Mar 12 15:42:09 2010 +0200
@@ -267,6 +267,8 @@
         CAknNavigationControlContainer* iNaviPane;
         
         CAknNavigationDecorator* iNaviDecorator;
+        
+        TBool iImToneSelectionListOpen;
 
 #ifdef _DEBUG
     friend class UT_cscsettingsui;
--- a/commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -81,6 +81,7 @@
     iTitlePane = static_cast<CAknTitlePane*> 
         ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
         
+    iImToneSelectionListOpen = EFalse;
     CSCSETUIDEBUG( "CCSCSettingsUiMainView::ConstructL - end" );
     }
 
@@ -670,51 +671,60 @@
 // ---------------------------------------------------------------------------
 void CCSCSettingsUiMainView::ShowImToneSelectionListL()
     {    
-    CMediaFileList* list = CMediaFileList::NewL();
-    CleanupStack::PushL( list );
-
-    HBufC* popupTitle = StringLoader::LoadLC( 
-        R_CSCSETTINGSUI_IM_TONE_POPUP_HEADING );
-    
-    HBufC* noTone = StringLoader::LoadLC( 
-        R_CSCSETTINGSUI_NO_IM_TONE_TEXT );
-        
-    list->SetAttrL( 
-        CMediaFileList::EAttrAutomatedType,
-        CDRMHelper::EAutomatedTypeIMAlert );
-        
-    list->SetNullItemL( 
-        *noTone,
-        KNullDesC, 
-        CMediaFileList::EMediaFileTypeAudio,
-        CMediaFileList::ENullItemIconOff );
+    CSCSETUIDEBUG( "CCSCSettingsUiMainView::ShowImToneSelectionListL - begin" );
     
-    list->SetAttrL( CMediaFileList::EAttrTitle, *popupTitle );
-
-    TBuf<KCSCMaxImToneLength> toneName;
-    TInt nullItem = KErrNotFound;    
-    
-    TBool result = list->ShowMediaFileListL(
-        &toneName, &nullItem , NULL, NULL );
-  
-    CleanupStack::PopAndDestroy( noTone );
-    CleanupStack::PopAndDestroy( popupTitle );
-    CleanupStack::PopAndDestroy( list );
-    
-    if ( result )
+    if ( !iImToneSelectionListOpen )
         {
-        iContainer->SaveImTonePathL( toneName );
-        }
-    else if( KErrNotFound != nullItem )
-        {
-        iContainer->SaveImTonePathL( KNullDesC );
-        }
-    else
-        {
-        // do nothing
+        iImToneSelectionListOpen = ETrue;
+        CMediaFileList* list = CMediaFileList::NewL();
+        CleanupStack::PushL( list );
+      
+        HBufC* popupTitle = StringLoader::LoadLC( 
+            R_CSCSETTINGSUI_IM_TONE_POPUP_HEADING );
+        
+        HBufC* noTone = StringLoader::LoadLC( 
+            R_CSCSETTINGSUI_NO_IM_TONE_TEXT );
+        
+        list->SetAttrL( 
+            CMediaFileList::EAttrAutomatedType,
+            CDRMHelper::EAutomatedTypeIMAlert );
+        
+        list->SetNullItemL( 
+            *noTone,
+            KNullDesC, 
+            CMediaFileList::EMediaFileTypeAudio,
+            CMediaFileList::ENullItemIconOff );
+        
+        list->SetAttrL( CMediaFileList::EAttrTitle, *popupTitle );
+        
+        TBuf<KCSCMaxImToneLength> toneName;
+        TInt nullItem = KErrNotFound;    
+        
+        TBool result = list->ShowMediaFileListL(
+            &toneName, &nullItem , NULL, NULL );
+       
+        CleanupStack::PopAndDestroy( noTone );
+        CleanupStack::PopAndDestroy( popupTitle );
+        CleanupStack::PopAndDestroy( list );
+        
+        if ( result )
+            {
+            iContainer->SaveImTonePathL( toneName );
+            }
+        else if( KErrNotFound != nullItem )
+            {
+            iContainer->SaveImTonePathL( KNullDesC );
+            }
+        else
+            {
+            // do nothing
+            }
+        
+        iContainer->UpdateContainerL();
+        iImToneSelectionListOpen = EFalse;
         }
     
-    iContainer->UpdateContainerL();
+    CSCSETUIDEBUG( "CCSCSettingsUiMainView::ShowImToneSelectionListL - end" );
     }
 
 
--- a/convergedconnectionhandler/cchclientapi/src/cchuiconnectionhandler.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/convergedconnectionhandler/cchclientapi/src/cchuiconnectionhandler.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -102,6 +102,9 @@
     // Security mode of the WLAN network
     TWlanConnectionSecurityMode securityMode; 
     
+    // Flag for determining if hidden wlan
+    TBool hiddenWlan( EFalse );
+    
     CCHUIDEBUG( 
         "CCchUiConnectionHandler::SearchAccessPointsL - begin search wlan" );
         
@@ -118,6 +121,27 @@
     CCHUIDEBUG( 
       "CCchUiConnectionHandler::SearchAccessPointsL - search wlan finished" ); 
     
+    // Check if hidden wlan
+    TUint32 easyWlanId( 0 );
+    easyWlanId = iCmManagerExt.EasyWlanIdL();
+    
+    if ( easyWlanId )
+        {
+        RCmConnectionMethodExt cmConnMethodExt = 
+            iCmManagerExt.ConnectionMethodL( easyWlanId );
+        CleanupClosePushL( cmConnMethodExt );
+        
+        if ( cmConnMethodExt.GetBoolAttributeL( CMManager::EWlanScanSSID ) )
+            {
+        CCHUIDEBUG( 
+             "CCchUiConnectionHandler::SearchAccessPointsL - hidden wlan" );
+        
+            hiddenWlan = ETrue;
+            }
+        
+        CleanupStack::PopAndDestroy( &cmConnMethodExt );
+        }
+    
     HBufC* ssid16 = HBufC::NewL( KSsidLength );
     CleanupStack::PushL( ssid16 );
     
@@ -157,7 +181,11 @@
         TBool alreadyExists = EFalse;
 
         TInt iapId = AddNewConnectionMethodL( 
-            newDestination, *ssid16, securityMode, alreadyExists, EFalse );
+            newDestination, 
+            *ssid16, 
+            securityMode,
+            alreadyExists,
+            hiddenWlan );
         
         if ( KErrCancel == iapId )
             {
@@ -191,7 +219,11 @@
         
         TBool alreadyExists = EFalse;
         TInt iapId = AddNewConnectionMethodL( 
-            destination, *ssid16, securityMode, alreadyExists, EFalse );
+            destination,
+            *ssid16,
+            securityMode,
+            alreadyExists, 
+            hiddenWlan );
         
         CleanupStack::PopAndDestroy( &destination );
         CleanupStack::PopAndDestroy( ssid16 );
@@ -230,6 +262,17 @@
         SetSnapToUseL( aServiceId, aSnapId ); 
         }
     
+    // Reset Easy Wlan EWlanScanSSID parameter to EFalse
+    if ( easyWlanId && hiddenWlan )
+        {
+        RCmConnectionMethodExt cmConnMethodExt = 
+            iCmManagerExt.ConnectionMethodL( easyWlanId );
+        CleanupClosePushL( cmConnMethodExt );
+        cmConnMethodExt.SetBoolAttributeL( CMManager::EWlanScanSSID, EFalse );
+        cmConnMethodExt.UpdateL();
+        CleanupStack::PopAndDestroy( &cmConnMethodExt );
+        }
+    
     CCHUIDEBUG( "CCchUiConnectionHandler::SearchAccessPointsL - OUT" );
     } 
 
--- a/sipvoipprovider/src/svpcontroller.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/sipvoipprovider/src/svpcontroller.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -2226,8 +2226,15 @@
     // Get VoIP profile by service id
     reg->FindByServiceIdL( callParams.ServiceId(), entryArray );
     // Take first entry from array
-    CRCSEProfileEntry* entry = entryArray[0];
-    
+    CRCSEProfileEntry* entry = NULL;
+    if (entryArray.Count() > 0)
+        {
+        entry = entryArray[0];
+        }
+    else
+        {
+        User::Leave(KErrNotFound);
+        }
     // array for provisioned data
     CDesC8ArrayFlat* userAgentHeaders = new( ELeave )CDesC8ArrayFlat( 4 );
     CleanupStack::PushL( userAgentHeaders );
--- a/sipvoipprovider/src/svpsessionbase.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/sipvoipprovider/src/svpsessionbase.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -1540,6 +1540,8 @@
     {
     SVPDEBUG1( "CSVPSessionBase::HandleStreamStateChange(aStream,aSink) In" )
     
+    CMceSession::TState sessionState = CMceSession::ETerminated;
+    
     if ( &aStream )
         {
         SVPDEBUG2( "CSVPSessionBase::HandleStreamStateChange(aStream,aSink) stream state=%d",
@@ -1550,8 +1552,8 @@
     
     if ( &aStream && aStream.Session() )
         {
-        SVPDEBUG2( "CSVPSessionBase::HandleStreamStateChange(aStream,aSink) session state=%d",
-                aStream.Session()->State() )
+        sessionState = aStream.Session()->State();
+        SVPDEBUG2( "CSVPSessionBase::HandleStreamStateChange(aStream,aSink) session state=%d", sessionState )
         }
     
     if ( &aSink )
@@ -1560,7 +1562,7 @@
                 aSink.IsEnabled() )
 
         if ( HasHoldController() && ESVPConnected == HoldController().HoldState() && 
-             !aSink.IsEnabled() && CMceSession::EEstablished == aStream.Session()->State() ) 
+             !aSink.IsEnabled() && CMceSession::EEstablished == sessionState )
             {
             // Hold state is connected but sink is disabled -> try enable after a while
             SVPDEBUG1( "CSVPSessionBase::HandleStreamStateChange - Resume ICMP, Sink" )
@@ -1580,6 +1582,8 @@
     {
     SVPDEBUG1( "CSVPSessionBase::HandleStreamStateChange(aStream,aSource) In" )
     
+    CMceSession::TState sessionState = CMceSession::ETerminated;
+    
     if ( &aStream )
         {
         SVPDEBUG2( "CSVPSessionBase::HandleStreamStateChange(aStream,aSource) stream state=%d",
@@ -1590,8 +1594,8 @@
     
     if ( &aStream && aStream.Session() )
         {
-        SVPDEBUG2( "CSVPSessionBase::HandleStreamStateChange(aStream,aSource) session state=%d",
-                aStream.Session()->State() )
+        sessionState = aStream.Session()->State();
+        SVPDEBUG2( "CSVPSessionBase::HandleStreamStateChange(aStream,aSource) session state=%d", sessionState )
         }
     
     if ( &aSource )
@@ -1600,7 +1604,7 @@
                 aSource.IsEnabled() )
 
         if ( HasHoldController() && ESVPConnected == HoldController().HoldState() && 
-             !aSource.IsEnabled() && CMceSession::EEstablished == aStream.Session()->State() )
+             !aSource.IsEnabled() && CMceSession::EEstablished == sessionState )
             {
             // Hold state is connected but source is disabled -> try enable after a while
             SVPDEBUG1( "CSVPSessionBase::HandleStreamStateChange - Resume ICMP, Source" )
--- a/voipplugins/accountcreationplugin/engine/src/acpcontroller.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/accountcreationplugin/engine/src/acpcontroller.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -134,8 +134,11 @@
     {
     ACPLOG( "CAcpController::FetchProviderListFromNetworkL begin" );
 
-    // Create SIP profile registry. From now on we'll get SIP events.
-    iSipModel = CSIPManagedProfileRegistry::NewL( *this );
+    if ( !iSipModel )
+        {
+        // Create SIP profile registry. From now on we'll get SIP events.
+        iSipModel = CSIPManagedProfileRegistry::NewL( *this );
+        }
     
     // Delete old data, otherwise Refresh won't work.
     delete iData;
--- a/voipplugins/accountcreationplugin/inc/accountcreationplugin.h	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/accountcreationplugin/inc/accountcreationplugin.h	Fri Mar 12 15:42:09 2010 +0200
@@ -169,6 +169,12 @@
      * Not own.
      */
     const MAiwNotifyCallback* iNotifyCallback;
+    
+    /**
+     * Handle to AIW callback notifier.
+     * Own.
+     */
+    CAiwGenericParamList* iCBEventParamList;
 
     /**
      * Handle to provider list view.
--- a/voipplugins/accountcreationplugin/src/accountcreationplugin.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/accountcreationplugin/src/accountcreationplugin.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -65,6 +65,9 @@
     iServiceHandler = CAiwServiceHandler::NewL();
 
     iEikEnv = CEikonEnv::Static();
+    
+    iCBEventParamList = CAiwGenericParamList::NewL();
+    iCBEventParamList->Reset();
 
     ACPLOG( "CAccountCreationPlugin::ConstructL end" );
     }
@@ -98,6 +101,7 @@
         }
  
 	iEikEnv = NULL;
+	delete iCBEventParamList;
 
     ACPLOG( "CAccountCreationPlugin::~CAccountCreationPlugin end" );
     }
@@ -134,13 +138,12 @@
     variant.Set( placing );
     TAiwGenericParam genericParamPlace( EGenericParamError, variant );
     paramList.AppendL( genericParamPlace );
-
+	
     // Send callback to the customer application.
-    CAiwGenericParamList* nullList = NULL;
     callback->HandleNotifyL( 
         KAiwCmdCSCUiExtensionPlugins,
         KAiwEventStarted,
-        *nullList,
+        *iCBEventParamList,
         paramList );
 
     ACPLOG( "CAccountCreationPlugin::SendInitializedCallbackL end" );
@@ -165,11 +168,10 @@
     paramList.AppendL( genericParamUid );
 
     // Send callback to the customer application.
-    CAiwGenericParamList* nullList = NULL;
     callback->HandleNotifyL( 
         KAiwCmdCSCUiExtensionPlugins,
         KAiwEventStopped,
-        *nullList,
+        *iCBEventParamList,
         paramList );
 
     ACPLOG( "CAccountCreationPlugin::SendCompletedCallbackL end" );
@@ -194,11 +196,10 @@
     paramList.AppendL( genericParamUid );
 
     // Send callback to the customer application.
-    CAiwGenericParamList* nullList = NULL;
     callback->HandleNotifyL( 
         KAiwCmdCSCUiExtensionPlugins,
         KAiwEventError,
-        *nullList,
+        *iCBEventParamList,
         paramList );
 
     ACPLOG( "CAccountCreationPlugin::SendErrorCallbackL end" );
--- a/voipplugins/sipconnectionprovider/src/scppresencehandler.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/sipconnectionprovider/src/scppresencehandler.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -207,6 +207,7 @@
         if ( iReqIdArray.Count() )
             {
             iDisableAfterXimpRequestsCompleted = ETrue;
+            StartForcedDisableTimer( CScpPresenceHandler::ForcePresenceServiceDisable );
             }
         else
             {
@@ -244,7 +245,13 @@
         if ( EScpNetworkLost == aEvent )
             {
             SCPLOGSTRING( "CScpPresenceHandler - EScpNetworkLost -> unbind" );
-            TRAP_IGNORE( HandleDeregistrationL( EFalse ) );
+            TRAPD( err, HandleDeregistrationL( EFalse ) );
+            
+            if ( KErrNotReady == err )
+                {
+                SCPLOGSTRING( "CScpPresenceHandler - EScpNetworkLost -> note ready: unbind" );
+                TRAP_IGNORE( ServerUnBindL() );
+                }
             }
         
         if ( EScpRoaming == aEvent )
@@ -298,6 +305,15 @@
                 {
                 CancelDisableTimer();
                 }
+            
+            // If this flag is still true, it could be that presence server
+            // has not given answer -> ximp requests cannot be completed.
+            // But still have to unbind from ximp context
+            if ( iDisableAfterXimpRequestsCompleted )
+                {
+                TRAP_IGNORE( ServerUnBindL() );
+                }
+            
             // When SIP is deregistered, change presence state to no bind
             iPresenceState = ENoBind;
             }
@@ -411,6 +427,7 @@
     
     CancelDisableTimer();
   
+    iReqIdArray.Reset();
     iPresenceState = ENoBind;
 
     // Check if disable was not requested
@@ -913,7 +930,7 @@
     if ( iDisableAfterXimpRequestsCompleted && !iReqIdArray.Count() )
         {
         iDisableAfterXimpRequestsCompleted = EFalse;
-        DisableSubService();
+        DeregisterNow();
         }
     
     SCPLOGSTRING( "CScpPresenceHandler::HandleRequestCompleteEvent OUT" ); 
--- a/voipplugins/sipconnectionprovider/src/scpservicemanager.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/sipconnectionprovider/src/scpservicemanager.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -628,7 +628,7 @@
     CScpSipConnection* sipConnection = GetSipConnectionL( aServiceId,
                                                           aSubServiceType, 
                                                           sipConnectionCreated );
-
+    
     TInt result = sipConnection->GetIap( aIapId );
     if( result != KErrNone )
         {
@@ -640,7 +640,9 @@
         {
         aSnapId = 0;
         }
-
+		
+    aPasswordSet = sipConnection->IsPasswordSet(); 
+    
     if( sipConnectionCreated )
         {
         delete sipConnection;
@@ -681,8 +683,6 @@
             aSnapLocked = EFalse;
             }
         }
-
-    aPasswordSet = sipConnection->IsPasswordSet(); 
         
     if( serviceCreated )
         {
--- a/voipplugins/sipmxresolver/src/sipmxresolver.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/sipmxresolver/src/sipmxresolver.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -36,6 +36,8 @@
 #include <sdpcodecstringconstants.h>
 #include <sdpattributefield.h>
 #include <sipstrings.h>
+#include <sipallowheader.h>
+#include <sipsupportedheader.h>
 
 //For checking dynamic voip status and MuS availability
 #include <featmgr.h>
@@ -59,7 +61,9 @@
 _LIT8( KSendOnly, "sendonly" );            		// For attribute checks
 _LIT8( KApplicationAttr, "application" );   	// For attribute checks
 _LIT8( KXApplicationAttr, "X-application" );	// For attribute checks
-_LIT8( KNokiaRtvs, "com.nokia.rtvs" );       	// For attribute checks 
+_LIT8( KNokiaRtvs, "com.nokia.rtvs" );       	// For attribute checks
+_LIT8( KSIPMethodsInAllowHeader, "INVITE,ACK,CANCEL,OPTIONS,BYE,PRACK,SUBSCRIBE,REFER,NOTIFY,UPDATE");	// SIP Methods allowed by various plugins
+_LIT8( KSIPExtensionsSupported, "100rel,timer,sec-agree"); //Extensions supported by various plugins
 
 /**
  * Cleanup function for RPointerArray
@@ -469,8 +473,29 @@
 // ---------------------------------------------------------------------------
 // 
 void CSipMXResolver::AddClientSpecificHeadersForOptionsResponseL(
-    RPointerArray<CSIPHeaderBase>& /*aHeaders*/ )
+    RPointerArray<CSIPHeaderBase>& aHeaders )
     {
+    SIPMXRLOG( "[SIPMXRESOLVER] -> \
+    CSipMXResolver::AddClientSpecificHeadersForOptionsResponseL()" )
+	//Add Allow Header		
+	RPointerArray<CSIPAllowHeader> allowheaders = 
+	    CSIPAllowHeader::DecodeL(KSIPMethodsInAllowHeader);
+	TInt count = allowheaders.Count();
+	for(TInt i = 0; i<count; i++)
+		{
+		User::LeaveIfError(aHeaders.Append(allowheaders[i]));
+		}
+	allowheaders.Reset();
+
+	//Add Supported Header
+	RPointerArray<CSIPSupportedHeader> supportedheaders = 
+	    CSIPSupportedHeader::DecodeL(KSIPExtensionsSupported);
+	count = supportedheaders.Count();
+	for(TInt j = 0; j<count; j++)
+		{
+		User::LeaveIfError(aHeaders.Append(supportedheaders[j]));
+		}
+	supportedheaders.Reset();
     }
 
 
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/group/voipxmlprocessor.mmp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/group/voipxmlprocessor.mmp	Fri Mar 12 15:42:09 2010 +0200
@@ -66,4 +66,5 @@
 LIBRARY       WEPSecuritySettingsUi.lib
 LIBRARY       WPASecuritySettingsUi.lib
 LIBRARY       commsdat.lib
+LIBRARY       ecom.lib
 
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmliaphandler.h	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmliaphandler.h	Fri Mar 12 15:42:09 2010 +0200
@@ -23,6 +23,9 @@
 
 class RCmManagerExt;
 
+const TUint8 KEapLeapId[] = { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11 };
+const TInt KEapChars = 8;
+
 class TWepKey
     {
 public:
@@ -78,6 +81,18 @@
      * Array of WEP keys.
      */
     RArray<TWepKey> iWepKeys;
+    /**
+     * EAP type.
+     */
+    TInt iEapType;
+    /**
+     * EAP username.
+     */
+    HBufC* iEapUsername;
+    /**
+     * EAP password.
+     */
+    HBufC* iEapPassword;
     };
 
 /**
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlprocessordefaults.h	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlprocessordefaults.h	Fri Mar 12 15:42:09 2010 +0200
@@ -49,6 +49,7 @@
 _LIT( KSettingsTypeAdditionalStun,        "additionalstun" );
 _LIT( KSettingsTypeWepKey,                "wepkey" );
 _LIT( KSettingsTypeDestination,           "destination" );
+_LIT( KSettingsTypeEap,                   "eap" );
 // Parameter names (i.e. supported values for 'value' attribute).
 // Generic.
 _LIT( KParamValueName,                    "name" );
@@ -141,6 +142,7 @@
 // ==============================
 //
 _LIT( KILbc, "ILBC" );
+const TInt KDefaultResubscribe = 600;
 
 // ==============================
 // SIP constants
@@ -209,7 +211,8 @@
 _LIT( KSecurityTypeWep,      "WEP" );
 _LIT( KSecurityTypeWpa,      "WPA" );
 _LIT( KSecurityTypeWpa2,     "WPA2" );
-_LIT( KSecurityType8021x,    "801X" );
+_LIT( KSecurityType8021x,    "8021X" );
+_LIT( KEapTypeLeap,          "LEAP" );
 _LIT( KWepAuthModeOpen,      "open" );
 _LIT( KWepAuthModeShared,    "shared" );
 
@@ -233,7 +236,8 @@
     EProxy,
     ERegistrar,
     EAdditionalStun,
-    EWepKey
+    EWepKey,
+    EEap
     };
 
 // Enumeration for parameters.
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmliaphandler.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmliaphandler.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -25,6 +25,8 @@
 #include <cmpluginwlandef.h>
 #include <WPASecuritySettingsUI.h>
 #include <WEPSecuritySettingsUI.h>
+#include <EapSettings.h>
+#include <EapType.h>
 
 #include "voipxmlutils.h"
 #include "voipxmliaphandler.h"
@@ -65,6 +67,9 @@
     iCurrentIap.iSecurityType = CMManager::EWlanSecModeOpen;
     iCurrentIap.iNetworkMode  = CMManager::EInfra;
     iCurrentIap.iWepAuthMode  = CWEPSecuritySettings::EAuthOpen;
+    iCurrentIap.iEapType      = EAPSettings::EEapNone;
+    iCurrentIap.iEapUsername  = NULL;
+    iCurrentIap.iEapPassword  = NULL;
     }
 
 // ---------------------------------------------------------------------------
@@ -100,6 +105,7 @@
         case EName:
             {
             TInt err( KErrNotFound );
+            //lint -e{960} No need for else statement here
             if ( EDestination == aType )
                 {
                 delete iDestinationName;
@@ -118,32 +124,38 @@
             }
         case EType:
             {
+            TBuf<KMaxNodeValueLength> value;
+            value.Copy( aValue );
+            value.UpperCase();
+
+            if ( EEap == aType )
+                {
+                if ( 0 == value.Compare( KEapTypeLeap ) )
+                    {
+                    iCurrentIap.iEapType = EAPSettings::EEapLeap;
+                    }
+                }
+
             if ( EWlan != aType )
                 {
                 break;
                 }
-            TBuf<KMaxNodeValueLength> value;
-            value.Copy( aValue );
-            value.UpperCase();
+            //lint -e{960} No need for else statement here
             if ( 0 == value.Compare( KSecurityTypeWep ) )
                 {
                 iCurrentIap.iSecurityType = CMManager::EWlanSecModeWep;
-                iSettingsSet = ETrue;
                 }
             else if ( 0 == value.Compare( KSecurityTypeWpa ) )
                 {
                 iCurrentIap.iSecurityType = CMManager::EWlanSecModeWpa;
-                iSettingsSet = ETrue;
                 }
             else if ( 0 == value.Compare( KSecurityTypeWpa2 ) )
                 {
                 iCurrentIap.iSecurityType = CMManager::EWlanSecModeWpa2;
-                iSettingsSet = ETrue;
                 }
             else if ( 0 == value.Compare( KSecurityType8021x ) )
                 {
                 iCurrentIap.iSecurityType = CMManager::EWlanSecMode802_1x;
-                iSettingsSet = ETrue;
                 }
             break;
             }
@@ -151,8 +163,8 @@
             {
             if ( EWlan == aType && !iCurrentIap.iSsid )
                 {
-                TRAPD( err, iCurrentIap.iSsid = aValue.AllocL() );
-                if ( KErrNone == err )
+                iCurrentIap.iSsid = aValue.Alloc();
+                if ( iCurrentIap.iSsid )
                     {
                     iSettingsSet = ETrue;
                     }
@@ -165,7 +177,6 @@
                 KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
                 {
                 iCurrentIap.iHidden = intValue;
-                iSettingsSet = ETrue;
                 }
             break;
             }
@@ -178,15 +189,14 @@
             TBuf<KMaxNodeValueLength> value;
             value.Copy( aValue );
             value.LowerCase();
+            //lint -e{960} No need for else statement here
             if ( 0 == value.Compare( KNetworkModeInfra ) )
                 {
                 iCurrentIap.iNetworkMode = CMManager::EInfra;
-                iSettingsSet = ETrue;
                 }
             else if ( 0 == value.Compare( KNetworkModeAdhoc ) )
                 {
                 iCurrentIap.iNetworkMode = CMManager::EAdhoc;
-                iSettingsSet = ETrue;
                 }
             break;
             }
@@ -194,11 +204,7 @@
             {
             if ( EWlan == aType && !iCurrentIap.iPreSharedKey )
                 {
-                TRAPD( err, iCurrentIap.iPreSharedKey = aValue.AllocL() );
-                if ( KErrNone == err )
-                    {
-                    iSettingsSet = ETrue;
-                    }
+                iCurrentIap.iPreSharedKey = aValue.Alloc();
                 }
             break;
             }
@@ -211,15 +217,14 @@
             TBuf<KMaxNodeValueLength> value;
             value.Copy( aValue );
             value.LowerCase();
+            //lint -e{960} No need for else statement here
             if ( 0 == value.Compare( KWepAuthModeOpen ) )
                 {
                 iCurrentIap.iWepAuthMode = CWEPSecuritySettings::EAuthOpen;
-                iSettingsSet = ETrue;
                 }
             else if ( 0 == value.Compare( KWepAuthModeShared ) )
                 {
                 iCurrentIap.iWepAuthMode = CWEPSecuritySettings::EAuthShared;
-                iSettingsSet = ETrue;
                 }
             break;
             }
@@ -229,7 +234,6 @@
                 KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ))
                 {
                 iCurrentIap.iCurrentWepKey.iLength = intValue;
-                iSettingsSet = ETrue;
                 }
             break;
             }
@@ -238,7 +242,22 @@
             if ( EWepKey == aType && KMaxWepKeyDataLength >= aValue.Length() )
                 {
                 iCurrentIap.iCurrentWepKey.iData.Copy( aValue );
-                iSettingsSet = ETrue;
+                }
+            break;
+            }
+        case EUsername:
+            {
+            if ( EEap == aType )
+                {
+                iCurrentIap.iEapUsername = aValue.Alloc();
+                }
+            break;
+            }
+        case EPassword:
+            {
+            if ( EEap == aType )
+                {
+                iCurrentIap.iEapPassword = aValue.Alloc();
                 }
             break;
             }
@@ -281,6 +300,7 @@
 //
 void CVoipXmlIapHandler::SettingsEnd( TInt aType )
     {
+    //lint -e{960} No need for else statement here
     if ( EWepKey == aType && iCurrentIap.iWepKeys.Count() < KMaxWepKeyCount )
         {
         TInt keyDataLength = iCurrentIap.iCurrentWepKey.iData.Length();
@@ -358,6 +378,18 @@
     iCurrentIap.iSecurityType = CMManager::EWlanSecModeOpen;
     iCurrentIap.iNetworkMode = CMManager::EInfra;
     iCurrentIap.iWepAuthMode = CWEPSecuritySettings::EAuthOpen;
+
+    iCurrentIap.iEapType = EAPSettings::EEapNone;
+    if ( iCurrentIap.iEapUsername )
+        {
+        delete iCurrentIap.iEapUsername;
+        iCurrentIap.iEapUsername = NULL;
+        }
+    if ( iCurrentIap.iEapPassword )
+        {
+        delete iCurrentIap.iEapPassword;
+        iCurrentIap.iEapPassword = NULL;
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -389,6 +421,16 @@
             {
             iIaps[counter]->iWepKeys.Close();
             }
+        if ( iIaps[counter]->iEapUsername )
+            {
+            delete iIaps[counter]->iEapUsername;
+            iIaps[counter]->iEapUsername = NULL;
+            }
+        if ( iIaps[counter]->iEapPassword )
+            {
+            delete iIaps[counter]->iEapPassword;
+            iIaps[counter]->iEapPassword = NULL;
+            }
         }
     iIaps.ResetAndDestroy();
     if ( aCloseArray )
@@ -413,6 +455,8 @@
     iap->iSsid = HBufC::NewLC( KMaxNodeValueLength ); // CS:1
     iap->iName = HBufC::NewLC( KMaxNodeValueLength ); // CS:2
     iap->iPreSharedKey = HBufC::NewLC( KMaxNodeValueLength ); // CS:3
+    iap->iEapUsername = HBufC::NewLC( KMaxNodeValueLength ); // CS:4
+    iap->iEapPassword = HBufC::NewLC( KMaxNodeValueLength ); // CS:5
 
     iap->iSsid->Des().Copy( iCurrentIap.iSsid->Des() );
     if ( iCurrentIap.iName )
@@ -423,10 +467,22 @@
         {
         iap->iName->Des().Copy( iCurrentIap.iSsid->Des() );
         }
+
     if ( iCurrentIap.iPreSharedKey )
         {
         iap->iPreSharedKey->Des().Copy( iCurrentIap.iPreSharedKey->Des() );
         }
+
+    iap->iEapType = iCurrentIap.iEapType;
+    if ( iCurrentIap.iEapUsername )
+        {
+        iap->iEapUsername->Des().Copy( iCurrentIap.iEapUsername->Des() );
+        }
+    if ( iCurrentIap.iEapPassword )
+        {
+        iap->iEapPassword->Des().Copy( iCurrentIap.iEapPassword->Des() );
+        }
+
     iap->iHidden = iCurrentIap.iHidden;
     iap->iNetworkMode = iCurrentIap.iNetworkMode;
     iap->iSecurityType = iCurrentIap.iSecurityType;
@@ -437,7 +493,7 @@
         iap->iWepKeys.Append( iCurrentIap.iWepKeys[counter] );
         }
     iIaps.AppendL( iap );
-    CleanupStack::Pop( 3, iap->iSsid );
+    CleanupStack::Pop( 5, iap->iSsid );
     }
 
 // ---------------------------------------------------------------------------
@@ -526,6 +582,7 @@
 TUint32 CVoipXmlIapHandler::CreateIapL( RCmManagerExt& aCmManager, 
     TTemporaryIap aTempIap )
     {
+    DBG_PRINT( "CVoipXmlIapHandler::CreateIapL - begin" );
     RCmConnectionMethodExt newConnMethod = 
         aCmManager.CreateConnectionMethodL( KUidWlanBearerType );
     CleanupClosePushL( newConnMethod ); // CS:1
@@ -545,11 +602,13 @@
     TUint32 wlanId = newConnMethod.GetIntAttributeL( 
         CMManager::EWlanServiceId );
     TUint32 iapId = newConnMethod.GetIntAttributeL( CMManager::ECmIapId );
-
+    TUint32 iapServiceId = newConnMethod.GetIntAttributeL( 
+        CMManager::ECmIapServiceId );
     CleanupStack::PopAndDestroy( &newConnMethod ); // CS:0
 
     if ( aTempIap.iSecurityType == CMManager::EWlanSecModeWep )
         {
+        DBG_PRINT( "   secMode WEP" );
         CMDBSession* db = CMDBSession::NewLC( CMDBSession::LatestVersion() );
         // CS:1
         CWEPSecuritySettings* wepSecSettings = 
@@ -562,25 +621,63 @@
                 counter, aTempIap.iWepKeys[counter].iData, 
                 aTempIap.iWepKeys[counter].iHex ) );
             }
-        wepSecSettings->SaveL( wlanId, *db );             
-        // wepSecSettings, db 
+        wepSecSettings->SaveL( wlanId, *db );
+        // wepSecSettings, db
         CleanupStack::PopAndDestroy( 2, db ); // CS:0
         }
-    else if ( aTempIap.iSecurityType == CMManager::EWlanSecMode802_1x ||
-        aTempIap.iSecurityType == CMManager::EWlanSecModeWpa ||
-        aTempIap.iSecurityType == CMManager::EWlanSecModeWpa2 )
+    else if ( CMManager::EWlanSecModeWpa == aTempIap.iSecurityType ||
+        CMManager::EWlanSecModeWpa2 == aTempIap.iSecurityType )
         {
-        CMDBSession* db = CMDBSession::NewLC( CMDBSession::LatestVersion() );
-        // CS:1
+        DBG_PRINT( "   secMode WPA/WPA2" );
+        CMDBSession* db = CMDBSession::NewLC( 
+            CMDBSession::LatestVersion() ); // CS:1
         CWPASecuritySettings* wpaSecSettings = 
             CWPASecuritySettings::NewL( ESecurityModeWpa );
         CleanupStack::PushL( wpaSecSettings ); // CS:2
+
+        if ( EAPSettings::EEapNone == aTempIap.iEapType )
+            {
+            DBG_PRINT( "   EapType none" );
+            User::LeaveIfError( wpaSecSettings->SetWPAPreSharedKey( 
+                aTempIap.iPreSharedKey->Des() ));
+            }
+        else if ( EAPSettings::EEapLeap == aTempIap.iEapType )
+            {
+            DBG_PRINT( "   eapType Leap" );
+            TBuf8<KMaxNodeValueLength> eapId;
+            eapId.Copy( KEapLeapId, KEapChars );
+            CEapType* eapType = CEapType::NewL( eapId, ELan, iapServiceId );
+            CleanupStack::PushL( eapType ); // CS:3
+            EAPSettings* eapSettings = new (ELeave) EAPSettings();
+            CleanupStack::PushL( eapSettings ); // CS:4
+            eapSettings->iEAPType = EAPSettings::EEapLeap;
+            eapSettings->iUsername.Copy( aTempIap.iEapUsername->Des() );
+            eapSettings->iUsernamePresent = ETrue;
+            eapSettings->iPassword.Copy( aTempIap.iEapPassword->Des() );
+            eapSettings->iPasswordPresent = ETrue;
+            eapType->SetConfigurationL( *eapSettings );
+            CleanupStack::PopAndDestroy( 2, eapType );
+            wpaSecSettings->SetWPAEnabledEAPPlugin( eapId );
+            }
+        wpaSecSettings->SaveL( wlanId, *db, ESavingBrandNewAP, 0 );
+        // wpaSecSettings, db
+        CleanupStack::PopAndDestroy( 2, db ); // CS:0
+        }
+    else if ( CMManager::EWlanSecMode802_1x == aTempIap.iSecurityType )
+        {
+        DBG_PRINT( "   secMode 802.1X" );
+        CMDBSession* db = CMDBSession::NewLC( 
+            CMDBSession::LatestVersion() ); // CS:1
+        CWPASecuritySettings* wpaSecSettings = 
+            CWPASecuritySettings::NewL( ESecurityMode8021x );
+        CleanupStack::PushL( wpaSecSettings ); // CS:2
         User::LeaveIfError( wpaSecSettings->SetWPAPreSharedKey( 
             aTempIap.iPreSharedKey->Des() ));
         wpaSecSettings->SaveL( wlanId, *db, ESavingBrandNewAP, 0 );
         // wpaSecSettings, db
         CleanupStack::PopAndDestroy( 2, db ); // CS:0
         }
+    DBG_PRINT( "CVoipXmlIapHandler::CreateIapL - end" );
     return iapId;
     }
 
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlnatfwhandler.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlnatfwhandler.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -104,6 +104,7 @@
             }
         case EUri:
             {
+            //lint -e{960} No need for else statement here
             if ( ENatFw == aType )
                 {
                 iStunSrvAddr->Des().Copy( aValue );
@@ -118,6 +119,7 @@
             }
         case EPort:
             {
+            //lint -e{960} No need for else statement here
             if ( ENatFw == aType && KErrNone == VoipXmlUtils::Des8ToInt( 
                 aValue, intVal ) )
                 {
@@ -161,6 +163,7 @@
             }
         case EUsername:
             {
+            //lint -e{960} No need for else statement here
             if ( ENatFw == aType )
                 {
                 iStunSrvUsername->Des().Copy( aValue );
@@ -175,6 +178,7 @@
             }
         case EPassword:
             {
+            //lint -e{960} No need for else statement here
             if ( ENatFw == aType )
                 {
                 iStunSrvPassword->Des().Copy( aValue );
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlparamhandler.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlparamhandler.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -148,6 +148,10 @@
         {
         iSettingsType = EDestination;
         }
+    else if ( KSettingsTypeEap() == type )
+        {
+        iSettingsType = EEap;
+        }
     else
         {
         iSettingsType = EUnknown;
@@ -220,6 +224,7 @@
         case EWlan:
         case EWepKey:
         case EDestination:
+        case EEap:
             {
             TInt param = ConvertParameter( aParam );
             iIapHandler->SetSetting( iSettingsType, param, aValue );
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlparser.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlparser.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -60,14 +60,14 @@
 //
 void CVoipXmlParser::ConstructL()
     {
-DBG_PRINT( "CVoipXmlParser::ConstructL begin" );
+    DBG_PRINT( "CVoipXmlParser::ConstructL begin" );
 
     iParser = CMDXMLParser::NewL( this );
     iParamHandler = CVoipXmlParamHandler::NewL();
     iDescription = HBufC::NewL( 0 );
     iBrandUrl = HBufC::NewL( 0 );
 
-DBG_PRINT( "CVoipXmlParser::ConstructL end" );
+    DBG_PRINT( "CVoipXmlParser::ConstructL end" );
     }
 
 // ---------------------------------------------------------------------------
@@ -236,6 +236,7 @@
         nodeName.Copy( node->NodeName() );
         nodeName.LowerCase();
         CMDXMLNode* child = node->FirstChild();
+        //lint -e{960} No need for else statement here
         if ( KNodeConfDescription() == nodeName && child && 
             CMDXMLNode::ETextNode == child->NodeType() )
             {
@@ -356,6 +357,7 @@
             element = NULL;
             element = static_cast<CMDXMLElement*>( node );
 
+            //lint -e{960} No need for else statement here
             if ( KNodeParam() == nodeName )
                 {
                 TPtrC nameVal;
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlsiphandler.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlsiphandler.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -234,6 +234,7 @@
                 tempBuf.Copy( KSip() );
                 }
             tempBuf.Append( aValue );
+            //lint -e{960} No need for else statement here
             if ( EProxy == aType )
                 {
                 iProxyUri->Des().Copy( tempBuf );
@@ -248,6 +249,7 @@
             }
         case ETransport:
             {
+            //lint -e{960} No need for else statement here
             if ( EProxy == aType )
                 {
                 iProxyTransport = ValidateTransport( aValue );
@@ -264,6 +266,7 @@
             {
             TInt value;
             TInt err = VoipXmlUtils::Des8ToInt( aValue, value );
+            //lint -e{960} No need for else statement here
             if ( EProxy == aType && KErrNone == err )
                 {
                 iProxyPort = value;
@@ -289,6 +292,7 @@
             }
         case EUsername:
             {
+            //lint -e{960} No need for else statement here
             if ( EProxy == aType )
                 {
                 if ( TSIPProfileTypeInfo::EInternet == 
@@ -323,6 +327,7 @@
             }
         case EPassword:
             {
+            //lint -e{960} No need for else statement here
             if ( EProxy == aType )
                 {
                 iProfile->SetParameter( KSIPOutboundProxy, KSIPDigestPassword,
@@ -365,6 +370,7 @@
         tempBuf.Copy( KColon() );
         tempBuf.AppendNum( iProxyPort );
         }
+    //lint -e{960} No need for else statement here
     if ( EUdp == iProxyTransport )
         {
         tempBuf.Append( KTransport() );
@@ -398,6 +404,7 @@
         tempBuf.Copy( KColon() );
         tempBuf.AppendNum( iRegistrarPort );
         }
+    //lint -e{960} No need for else statement here
     if ( EUdp == iRegistrarTransport )
         {
         tempBuf.Append( KTransport() );
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlvoiphandler.cpp	Fri Feb 19 22:44:34 2010 +0200
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlvoiphandler.cpp	Fri Mar 12 15:42:09 2010 +0200
@@ -938,7 +938,7 @@
     {
     iSpSettings.iAutoAcceptBuddies = EFalse;
     iSpSettings.iAutoEnable        = EFalse;
-    iSpSettings.iResubrcribe = KErrNotFound;
+    iSpSettings.iResubrcribe = KDefaultResubscribe;
     if ( iSpSettings.iBrandingUri )
         {
         delete iSpSettings.iBrandingUri;
@@ -1076,6 +1076,7 @@
     TBool vmbx( EFalse );
 
     // Set MWI URI if present.
+    //lint -e{960} No need for else statement here
     if ( iSpSettings.iMwiUri )
         {
         property->SetName( ESubPropertyVMBXMWIAddress );
@@ -1107,14 +1108,12 @@
         vmbx = ETrue;
         }
 
-    if ( KErrNotFound != iSpSettings.iResubrcribe )
+    if ( vmbx )
         {
         property->SetName( ESubPropertyVMBXMWISubscribeInterval );
         property->SetValue( iSpSettings.iResubrcribe );
         spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        }
-    if ( vmbx )
-        {
+
         property->SetName( ESubPropertyVMBXSettingsId );
         property->SetValue( iEntry->iIds[0].iProfileId );
         spSettings->AddOrUpdatePropertyL( serviceId, *property );