multimediacommsengine/mmcesrv/mmceserver/src/mcesipsession.cpp
branchRCL_3
changeset 3 513a8b745b2f
parent 0 1bce908db942
child 7 5e57de868bc0
equal deleted inserted replaced
0:1bce908db942 3:513a8b745b2f
   223     while( iBodyBucket.Count() > 0 )
   223     while( iBodyBucket.Count() > 0 )
   224         {
   224         {
   225         CMceComSession* body = iBodyBucket[ 0 ];
   225         CMceComSession* body = iBodyBucket[ 0 ];
   226         if ( &body->SdpSession() )
   226         if ( &body->SdpSession() )
   227             {
   227             {
       
   228             if( body->SdpSession().Context() == Dialog() )
       
   229                 {
       
   230                 //fork situation
       
   231                 CMceComSession* tmpBody = body;
       
   232                 body = iBody;
       
   233                 iBody = tmpBody;
       
   234                 }
   228             body->SdpSession().AttachContext( NULL );
   235             body->SdpSession().AttachContext( NULL );
   229             }
   236             }
   230         CMceComSession::Delete( body, Manager().MediaManager() );
   237         CMceComSession::Delete( body, Manager().MediaManager() );
   231         iBodyBucket.Remove( 0 );
   238         iBodyBucket.Remove( 0 );
   232         }
   239         }
  1266             iCurrentDialog = iDialog;
  1273             iCurrentDialog = iDialog;
  1267             }        
  1274             }        
  1268         }
  1275         }
  1269     else
  1276     else
  1270         {
  1277         {
  1271         if ( Response().Type() == SIPStrings::StringF( SipStrConsts::EInvite ) )
  1278         if ( Response().Type() == SIPStrings::StringF( SipStrConsts::EInvite ) ||
       
  1279         		Response().Type() == SIPStrings::StringF( SipStrConsts::EPrack ) )
  1272             {
  1280             {
  1273             // If one of the forked dialogs generated 200 OK response 
  1281             // If one of the forked dialogs generated 200 OK response 
  1274             // for a session that is not in established state,
  1282             // for a session that is not in established state,
  1275             // replace the actual dialog with that
  1283             // replace the actual dialog with that
  1276             HandleForkedDialogs();
  1284             HandleForkedDialogs();
  2610 	
  2618 	
  2611 TInt CMceSipSession::ForkedDialogsCount()
  2619 TInt CMceSipSession::ForkedDialogsCount()
  2612 	{
  2620 	{
  2613 	return iForkedDialogs.Count();
  2621 	return iForkedDialogs.Count();
  2614 	}
  2622 	}
       
  2623 // -----------------------------------------------------------------------------
       
  2624 // CMceSipSession::ForceUpdateStreamL
       
  2625 // -----------------------------------------------------------------------------
       
  2626 //
       
  2627 void CMceSipSession::ForceUpdateStreamL()
       
  2628 	{
       
  2629 	MCESRV_DEBUG("CMceSipSession::ForceUpdateStream, Entry");    
       
  2630 	if( iBody->SdpSession().Context() == Dialog() )
       
  2631 		{
       
  2632 		Manager().MediaManager().ForceEnableSinkState( ActiveBody() );
       
  2633 		}
       
  2634 	else
       
  2635 		{
       
  2636 		ActiveBody().SdpSession().UpdateSecureStreamL( ActiveBody() );
       
  2637 		Manager().MediaManager().UpDateStreamStateL( *iBody, ActiveBody() );
       
  2638 		}
       
  2639 	MCESRV_DEBUG("CMceSipSession::ForceUpdateStream, Exit");    
       
  2640 	}
       
  2641 // -----------------------------------------------------------------------------
       
  2642 // CMceSipSession::ResetCurrentDialog
       
  2643 // -----------------------------------------------------------------------------
       
  2644 //
       
  2645 void CMceSipSession::ResetCurrentDialog()
       
  2646 	{
       
  2647 	if( iBodyBucket.Count() == 0 )
       
  2648 		{
       
  2649 		iCurrentDialog = iDialog;
       
  2650 		}
       
  2651 	}
  2615 //  End of File
  2652 //  End of File