multimediacommsengine/mmcesrv/mmceserver/src/mcesipsession.cpp
branchRCL_3
changeset 3 513a8b745b2f
parent 0 1bce908db942
child 5 5e57de868bc0
--- a/multimediacommsengine/mmcesrv/mmceserver/src/mcesipsession.cpp	Tue Feb 02 01:04:58 2010 +0200
+++ b/multimediacommsengine/mmcesrv/mmceserver/src/mcesipsession.cpp	Fri Feb 19 23:12:20 2010 +0200
@@ -225,6 +225,13 @@
         CMceComSession* body = iBodyBucket[ 0 ];
         if ( &body->SdpSession() )
             {
+            if( body->SdpSession().Context() == Dialog() )
+                {
+                //fork situation
+                CMceComSession* tmpBody = body;
+                body = iBody;
+                iBody = tmpBody;
+                }
             body->SdpSession().AttachContext( NULL );
             }
         CMceComSession::Delete( body, Manager().MediaManager() );
@@ -1268,7 +1275,8 @@
         }
     else
         {
-        if ( Response().Type() == SIPStrings::StringF( SipStrConsts::EInvite ) )
+        if ( Response().Type() == SIPStrings::StringF( SipStrConsts::EInvite ) ||
+        		Response().Type() == SIPStrings::StringF( SipStrConsts::EPrack ) )
             {
             // If one of the forked dialogs generated 200 OK response 
             // for a session that is not in established state,
@@ -2612,4 +2620,33 @@
 	{
 	return iForkedDialogs.Count();
 	}
+// -----------------------------------------------------------------------------
+// CMceSipSession::ForceUpdateStreamL
+// -----------------------------------------------------------------------------
+//
+void CMceSipSession::ForceUpdateStreamL()
+	{
+	MCESRV_DEBUG("CMceSipSession::ForceUpdateStream, Entry");    
+	if( iBody->SdpSession().Context() == Dialog() )
+		{
+		Manager().MediaManager().ForceEnableSinkState( ActiveBody() );
+		}
+	else
+		{
+		ActiveBody().SdpSession().UpdateSecureStreamL( ActiveBody() );
+		Manager().MediaManager().UpDateStreamStateL( *iBody, ActiveBody() );
+		}
+	MCESRV_DEBUG("CMceSipSession::ForceUpdateStream, Exit");    
+	}
+// -----------------------------------------------------------------------------
+// CMceSipSession::ResetCurrentDialog
+// -----------------------------------------------------------------------------
+//
+void CMceSipSession::ResetCurrentDialog()
+	{
+	if( iBodyBucket.Count() == 0 )
+		{
+		iCurrentDialog = iDialog;
+		}
+	}
 //  End of File