diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCESIPConnection.cpp --- a/multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCESIPConnection.cpp Tue Aug 31 15:35:13 2010 +0300 +++ b/multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCESIPConnection.cpp Wed Sep 01 12:20:28 2010 +0100 @@ -617,7 +617,31 @@ iConnection->ConnectionStateChanged( CSIPConnection::EUnavailable ); EUNIT_ASSERT( !iSipSession->Body()->iIsConnectionActive ); - + //cleanup orphan session test + CMceSipManager& manager = iServerCore->Manager(); + iIds.iProfileID = 1; + iIds.iManagerType = KMceCSSIPSession; + iIds.iDialogType = KMceDlgTypeInvite; + + CDesC8ArrayFlat* params = new (ELeave) CDesC8ArrayFlat( KMceArrayGranularity ); + CleanupStack::PushL( params ); + params->AppendL( _L8("User ") ); + params->AppendL( _L8("User ") ); + + iConnection->Connection().SetState( CSIPConnection::EActive ); + CMceCsSubSession* subsession = + manager.CreateSubSessionL( *iSession, iIds, *params ); + CleanupStack::PushL( subsession ); + + manager.AddOrphanSubSessionL(subsession); + CleanupStack::Pop( subsession ); + EUNIT_ASSERT ( manager.OrphanSubSessionCount() == 1 ); + + iConnection->Connection().SetState( CSIPConnection::EInactive ); + iConnection->ConnectionStateChanged( CSIPConnection::EInactive ); + EUNIT_ASSERT ( manager.OrphanSubSessionCount() == 0 ); + + CleanupStack::PopAndDestroy(); }