--- 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