voipplugins/sipconnectionprovider/src/scpservicehandlerbase.cpp
branchRCL_3
changeset 15 43658d24f35d
parent 14 be41ab7b952f
--- a/voipplugins/sipconnectionprovider/src/scpservicehandlerbase.cpp	Tue May 11 16:04:22 2010 +0300
+++ b/voipplugins/sipconnectionprovider/src/scpservicehandlerbase.cpp	Tue May 25 12:31:20 2010 +0300
@@ -160,6 +160,18 @@
     }
 
 // -----------------------------------------------------------------------------
+// CScpServiceHandlerBase::PerformInstantForceSipProfileDisable
+// -----------------------------------------------------------------------------
+//
+void CScpServiceHandlerBase::PerformInstantForceSipProfileDisable()
+    {
+    SCPLOGSTRING2( 
+        "CScpServiceHandlerBase[0x%x]::PerformInstantForceSipProfileDisable", 
+        this );
+    HandleSipProfileForcedDisable( ETrue );
+    }
+
+// -----------------------------------------------------------------------------
 // CScpServiceHandlerBase::StartForcedDisableTimer
 // -----------------------------------------------------------------------------
 //
@@ -195,11 +207,25 @@
 // CScpServiceHandlerBase::HandleSipProfileForcedDisable
 // -----------------------------------------------------------------------------
 //
-void CScpServiceHandlerBase::HandleSipProfileForcedDisable()
+void CScpServiceHandlerBase::HandleSipProfileForcedDisable( 
+    TBool aForceDisableSipProfile )
     {
     SCPLOGSTRING2( 
         "CScpServiceHandlerBase[0x%x]::HandleSipProfileForcedDisable", this );
 
+    if ( aForceDisableSipProfile )
+        {
+        CScpProfileHandler& profileHandler = iSubService.ProfileHandler();
+    
+        CScpSipConnection* sipConnection = 
+            profileHandler.GetSipConnection( iSubService.SipProfileId() );
+      
+        if ( sipConnection )
+            {
+            sipConnection->ForceDisable();
+            }
+        }
+    
     HandleSipConnectionEvent( iSubService.SipProfileId(), EScpDeregistered );
     }
 
@@ -214,7 +240,7 @@
     CScpServiceHandlerBase* self = static_cast<CScpServiceHandlerBase*>( aSelf );
     
     self->CancelDisableTimer();
-    self->HandleSipProfileForcedDisable();
+    self->HandleSipProfileForcedDisable( EFalse );
 
     return 1;
     }