diff -r bddb6d4447db -r ed1e38b404e5 callcontinuity/vcc/src/cvccdirector.cpp --- a/callcontinuity/vcc/src/cvccdirector.cpp Mon Mar 15 12:39:55 2010 +0200 +++ b/callcontinuity/vcc/src/cvccdirector.cpp Wed Mar 31 21:20:05 2010 +0300 @@ -197,9 +197,14 @@ User::Leave( KErrNotFound ); } + iMandatoryPluginFailedError = KErrNone; + //MT: setting CVccDirector as observer to plugin Initialize( *this, aSsObserver ); - + + // Leave if mandatory plugins failed + User::LeaveIfError( iMandatoryPluginFailedError ); + // save CCP monitor ; CCCEPluginMCCPObserver const MCCPCSObserver& obs = static_cast( aMonitor ); iCCPObserver = const_cast(&obs); @@ -229,19 +234,28 @@ TRAPD( err, InitializeL( aMonitor, aSsObserver, *(iProviders[ i ]) ) ); RUBY_DEBUG1( "initialization err = %d", err ); - switch( err ) - { - case KErrNone: - iInitialisedPlugins.Append( pluginUid.iUid ); - //fall-through - case KErrAlreadyExists: - RUBY_DEBUG0( "-- VCC plugin initialization OK" ); - break; - default: - RUBY_DEBUG0( "-- VCC plugin initialization FAILED" ); - initSucceeded = EFalse; - break; - } + if ( KErrNone != err && KCSCallProviderPlugId == pluginUid.iUid ) // CS plugin mandatory + { + RUBY_DEBUG0( "-- Mandatory VCC plugin initialization FAILED" ); + initSucceeded = EFalse; + iMandatoryPluginFailedError = err; + } + else + { + switch( err ) + { + case KErrNone: + iInitialisedPlugins.Append( pluginUid.iUid ); + //fall-through + case KErrAlreadyExists: + RUBY_DEBUG0( "-- VCC plugin initialization OK" ); + break; + default: + RUBY_DEBUG0( "-- VCC plugin initialization FAILED" ); + initSucceeded = EFalse; + break; + } + } } RUBY_DEBUG1( "-- VCC plugin nbr of initialized plugins:%d",