mmsharing/mmshavailability/src/musavacapabilitysipagent.cpp
branchRCL_3
changeset 33 bc78a40cd63c
parent 32 73a1feb507fb
--- a/mmsharing/mmshavailability/src/musavacapabilitysipagent.cpp	Tue Aug 31 15:12:07 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavacapabilitysipagent.cpp	Wed Sep 01 12:31:01 2010 +0100
@@ -30,6 +30,7 @@
 #include <sipstrconsts.h>
 #include <sipresponseelements.h>
 
+#include "mussettings.h"
 #include "muslogger.h"
 #include "musavacapabilityexchange.h"
 #include "musavacapabilityquery.h"
@@ -164,12 +165,25 @@
     {
     MUS_LOG( "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent::IncomingRequest" )
     TInt retval = KErrNone;
+    MusSettingsKeys::TOperatorVariant variantValue = MusSettingsKeys::EStandard;
+    TRAPD( error, variantValue = 
+                  MultimediaSharingSettings::OperatorVariantSettingL() );
+    if( error )
+    	{
+         MUS_LOG("CMusAvaCapabilitySipAgent::IncomingRequest\
+        		  Get OperatorVariantSettingL worng");
+    	}
+    
     if ( aTransaction->Type() == 
                         SIPStrings::StringF( SipStrConsts::EOptions ) )
         {  
-        // Answer 200OK only when CS call remain at Availability States
+        // Answer 200OK when CS call remain at Availability States
+        //or at EMusAvaOptionNotAvailable State in operatorspecific mode
         if ( MMusAvaObserver::EMusAvaStatusNotExecuted <= 
-             iAvailabilityObserver.AvailabilityPluginState() )
+             iAvailabilityObserver.AvailabilityPluginState()  
+             ||( ( iAvailabilityObserver.AvailabilityPluginState() ==
+              MMusAvaObserver::EMusAvaOptionNotAvailable ) 
+              && ( variantValue == MusSettingsKeys::EOperatorSpecific  )))
             {
             retval = 
              iCapabilityExchange.QueryObserver().CapabilityQueryAnswered() ?