--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ipappsrv_info/ipappsrv_metadata/ipappsrv_metadata.mrp Wed Sep 01 12:20:28 2010 +0100
@@ -0,0 +1,6 @@
+component ipappsrv_metadata
+source \sf\mw\ipappsrv\ipappsrv_info\ipappsrv_metadata
+source \sf\mw\ipappsrv\package_definition.xml
+source \sf\mw\ipappsrv\distribution.policy.s60
+notes_source \component_defs\release.src
+ipr T
--- a/multimediacommscontroller/mmcccontroller/src/mccscreen.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommscontroller/mmcccontroller/src/mccscreen.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -203,6 +203,7 @@
iRwGroup->SetName( KMccWindowGroupName );
iRwGroup->SetOrdinalPosition( iWindowOrdinalPosition, iWindowOrdinalPriority );
+ iRwGroup->AutoForeground( EFalse );
// Create screen device
iDev = new (ELeave) CWsScreenDevice( iRwSession );
@@ -794,6 +795,7 @@
iRw->Invalidate( vfRect );
iRw->BeginRedraw( vfRect );
iGraphicsContext->CancelClippingRect();
+ iGraphicsContext->SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
iGraphicsContext->SetBrushStyle( CGraphicsContext::ESolidBrush );
iGraphicsContext->SetBrushColor( TRgb( 255, 255, 255, 0 ) );
iGraphicsContext->DrawRect( vfRect );
--- a/multimediacommscontroller/mmccvideosourcesink/group/videosourcesink.mmp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommscontroller/mmccvideosourcesink/group/videosourcesink.mmp Wed Sep 01 12:20:28 2010 +0100
@@ -27,8 +27,6 @@
UID 0x10009D8D 0x102747CC
-STDCPP
-
SOURCEPATH ../src
SOURCE mccvideosourcesinkfactory.cpp
SOURCE mccvideosink.cpp
@@ -94,7 +92,7 @@
#if (defined WINS)
LIBRARY camc3gpsink.lib
-LIBRARY esock.lib libstdcppv5.lib
+LIBRARY esock.lib
MACRO MCC_VIDEO_SOURCE_FOR_EMU
--- a/multimediacommscontroller/mmccvideosourcesink/src/mccredrawhandler.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommscontroller/mmccvideosourcesink/src/mccredrawhandler.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -61,7 +61,6 @@
__V_SOURCESINK_CONTROLL_INT1( "CMccRedrawHandler::BlackDrawingL, enabled:",
aIsEnabled )
- iDrawBlack = aIsEnabled;
if ( DoRedrawing() )
{
@@ -116,8 +115,7 @@
CActive( CActive::EPriorityStandard ),
iWsSession( aWsSession ),
iWindow( aWindow ),
- iGc( aGc ),
- iDrawBlack( EFalse )
+ iGc( aGc )
{
CActiveScheduler::Add( this );
}
@@ -150,14 +148,7 @@
iWindow.Invalidate( aRect );
iWindow.BeginRedraw( aRect );
- if ( iDrawBlack )
- {
- iGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- iGc.SetBrushColor( KRgbBlack );
- iGc.Clear( aRect );
- iDrawBlack = EFalse;
- }
- else if ( iWindow.DisplayMode() >= EColor16MA )
+ if ( iWindow.DisplayMode() >= EColor16MA )
{
// Need to set alpha mode, otherwise video cannot be seen
iGc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
@@ -182,7 +173,7 @@
//
TBool CMccRedrawHandler::DoRedrawing() const
{
- return ( iDrawBlack || iWindow.DisplayMode() >= EColor16MA );
+ return ( iWindow.DisplayMode() >= EColor16MA );
}
// -----------------------------------------------------------------------------
--- a/multimediacommsengine/mmceshared/src/mcecomamrwbcodec.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmceshared/src/mcecomamrwbcodec.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -300,24 +300,8 @@
//
CMceComCodec* CMceComAMRWbCodec::DoMccValidateL( CMccCodecInformation& aMccCodec,
CMceSrvStream& /*aStream*/,
- TMceNegotiationRole aRole )
+ TMceNegotiationRole /*aRole */)
{
- //if answerer mcc codec represents the received offer and codec the answer
- //if offerer codec represents the sent offer and mcc codec the answer
-
- // Bitrates field contains also additional information, mask it away
- /*
- TUint mccBitrates = ( aMccCodec.AllowedBitrates() & KMceAllowedAmrWbBitrateAll );
- TUint mceBitrates = ( iAllowedBitrates & KMceAllowedAmrWbBitrateAll );
-
- TBool notValid = aRole == EMceRoleAnswerer ?
- ( mceBitrates && mccBitrates == 0 ||
- mceBitrates > mccBitrates ) :
- ( mceBitrates && mccBitrates == 0 ||
- mceBitrates < mccBitrates );
-
- */
-// User::LeaveIfError( notValid ? KErrNotSupported : KErrNone );
if ( aMccCodec.CodecMode() != (TCodecMode)iCodecMode )
{
// codec-mode was different, fail.
--- a/multimediacommsengine/mmcesrv/mmcemediamanager/inc/mcesecuredesstream.h Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/inc/mcesecuredesstream.h Wed Sep 01 12:20:28 2010 +0100
@@ -213,13 +213,12 @@
void ForceUpdateStreamL();
private:
- /**
- * Set Crypto Context to MCC after Encode/Decode SDP are done
- * @return void
- */
- void SetCryptoContextL( );
-
-
+ /**
+ * * Set Crypto Context to MCC after Encode/Decode SDP are done
+ * @return void
+ */
+ void SetCryptoContextL( TBool aAnswer = ETrue );
+
/**
* Base64 encoding
* @since Series 60 3.0
@@ -401,6 +400,7 @@
TMceSecureCryptoInfo iCryptoOut;
TMceSecureCryptoInfo iCryptoIn;
TBool iGnoreSdpMsg;
+ TBool iWaitingBinding;
private://data
@@ -421,8 +421,9 @@
CSdpMediaField* iMediaField;
TBool iIsSAVP;
-
- TBool iWaitingBinding;
+
+ TBool iRemoteChangeKey;
+
TUint32 iCryptoContextOutId;
--- a/multimediacommsengine/mmcesrv/mmcemediamanager/inc/mcesecuremediasession.h Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/inc/mcesecuremediasession.h Wed Sep 01 12:20:28 2010 +0100
@@ -207,6 +207,7 @@
TBool iKeyNeedUpdated;
TBool iCryptoContextUpdate;
TBool iLSReadyToBind;
+ TBool iNatBind;
private:
--- a/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediamanager.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediamanager.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -307,6 +307,11 @@
aSession.NegotiationState().UpdateL();
status = !aSession.NegotiationState().CallbackAllowed() ?
KMceReady : KMceAsync;
+ if ( aSession.SecureSession() && negotationStateId ==
+ KMceOfferingMedia && aSession.SecureSession()->iLSReadyToBind )
+ {
+ aSession.SecureSession()->BindStreamCrypto();
+ }
MCEMM_DEBUG("CMceMediaManager::UpdateL(), Exit ");
return status;
}
--- a/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcesdpsession.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcesdpsession.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -183,6 +183,13 @@
}
else
{
+ if( aSession.SecureSession() )
+ {
+ if( aSession.SecureSession()->iKeyNeedUpdated )
+ {
+ aSession.SecureSession()->iKeyNeedUpdated = EFalse;
+ }
+ }
sdpDocument = iSdpDocument;
CleanSessionParams( *iSdpDocument );
}
@@ -647,6 +654,11 @@
TOfferType type = !Backup() ? EFirst : EUpdate;
+ if( type == EUpdate && aSession.SecureSession() )
+ {
+ aSession.SecureSession()->iLSReadyToBind = ETrue;
+ }
+
CleanSessionParams( *iSdpDocument );
EncodeSessionParamsL( aSession, *iSdpDocument, type );
--- a/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcesecuredesstream.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcesecuredesstream.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -83,12 +83,12 @@
CMccSecureInterface& aSecureInterface,
CMceComMediaStream& aMediaStream
):
-
+ iWaitingBinding(EFalse),
iSecureSession(aSecureSession),
iSecInf(aSecureInterface),
iMediaStream(aMediaStream),
iIsSAVP(ETrue),
- iWaitingBinding(EFalse),
+ iRemoteChangeKey(EFalse),
iCryptoContextOutId(0),
iCryptoContextInId(0),
iOldLocalMediaPort(0)
@@ -337,6 +337,11 @@
MCEMM_DEBUG(" Set Multiple Client Cryptoto")
User::LeaveIfError ( CountCryptoInOffer( aMediaField ) );
Session().iIsSecureSession = !iGnoreSdpMsg ? ETrue : EFalse;
+ if( iSecureSession.iNatBind )
+ {
+ SetCryptoContextL( ETrue );
+ iSecureSession.iNatBind = EFalse;
+ }
}
MCEMM_DEBUG("CMceSecureDesStream::DecodeSecureSdpL(), Exit")
MSG_IGNORE_RETURN()
@@ -377,7 +382,8 @@
}
if ( iSecureSession.iLSReadyToBind )
{
- SetCryptoContextL();
+ SetCryptoContextL( EFalse );
+ iRemoteChangeKey = EFalse;
}
MSG_IGNORE_RETURN()
if ( !iCryptoIn.iCryptoSuite.Length() )
@@ -438,9 +444,10 @@
// Sets crypto context to MCC
// -----------------------------------------------------------------------------
//
-void CMceSecureDesStream::SetCryptoContextL( )
+void CMceSecureDesStream::SetCryptoContextL( TBool aAnswer )
{
- MCEMM_DEBUG("SetCryptoContext(), Entry")
+ MCEMM_DEBUG("SetCryptoContext(), Entry")
+ TBool bindContext = ETrue;
TBool storedIgnoreSdpMsg = EFalse;
//Check state first if the crypto has been set
if ( !iCryptoIn.iIfCryptoContextIdSet &&
@@ -455,6 +462,12 @@
CreateCryptoContextL( iCryptoOut );
MCEMM_DEBUG_DVALUE( "iCryptoContextOutId", iCryptoIn.iCryptoContextId )
MCEMM_DEBUG_DVALUE( "iCryptoContextInId", iCryptoOut.iCryptoContextId )
+
+ if( !aAnswer )
+ {
+ bindContext = EFalse;
+ MCEMM_DEBUG("delay to bind!");
+ }
iCryptoOuts->Reset();
@@ -473,7 +486,7 @@
}
MCEMM_DEBUG_DVALUE( "Updated iCryptoContextOutId", iCryptoIn.iCryptoContextId )
MCEMM_DEBUG_DVALUE( "Updated iCryptoContextInId", iCryptoOut.iCryptoContextId )
- if ( iSecureSession.iKeyNeedUpdated )
+ if ( iSecureSession.iKeyNeedUpdated || iRemoteChangeKey )
{
UpdateCryptoContextL( iCryptoIn );
storedIgnoreSdpMsg = iGnoreSdpMsg;
@@ -489,7 +502,7 @@
iGnoreSdpMsg = (iCryptoIn.iIfCryptoContextIdSet &&
iCryptoOut.iIfCryptoContextIdSet ) &&
!iGnoreSdpMsg ? EFalse : ETrue;
- if ( iWaitingBinding )
+ if ( iWaitingBinding && bindContext )
{
iSecureSession.BindStreamCrypto();
}
@@ -844,6 +857,13 @@
}
else
{
+ if( iRemoteChangeKey )
+ {
+ MCEMM_DEBUG("Update CryptoIn" )
+ TBool tmpSet = iCryptoIn.iIfCryptoContextIdSet;
+ iCryptoIn.Copy( iCryptoIns->At( 0 ) );
+ iCryptoIn.iIfCryptoContextIdSet = tmpSet;
+ }
if(iOldLocalMediaPort != iMediaStream.iLocalMediaPort)
{
GenerateRandomKeys( iCryptoOut );
@@ -857,7 +877,8 @@
MSG_IGNORE_RETURN()
if ( iSecureSession.iLSReadyToBind )
{
- SetCryptoContextL();
+ SetCryptoContextL( ETrue );
+ iRemoteChangeKey = EFalse;
}
MSG_IGNORE_RETURN()
}
@@ -1207,13 +1228,14 @@
}
TPtrC8 keyInfo = aSecDec.Mid(keyInfoPos, keyInfoLen);
- if ( iSecureSession.iKeyNeedUpdated )
- {
+
- TBool valid = ValidateSecurityDescriptions( keyInfo );
- if ( valid )
+ TBool valid = ValidateSecurityDescriptions( keyInfo );
+ if ( valid )
+ {
+ iRemoteChangeKey = iCryptoIn.iEncodedKey.Compare( keyInfo ) != 0;
+ if( iSecureSession.iKeyNeedUpdated || iRemoteChangeKey )
{
-
// check keyInfo
if (iCryptoOut.iEncodedKey.Compare( keyInfo ) == 0)
{
@@ -1227,11 +1249,11 @@
iCryptoIn.iEncodedKey = keyInfo;
StoreKeys(iCryptoIn.iEncodedKey);
}
- else
- {
- User::Leave( KErrArgument );
- }
- }
+ }
+ else
+ {
+ User::Leave( KErrArgument );
+ }
}
else
{
@@ -1286,7 +1308,12 @@
if ( valid )
{
-
+ if( !iSecureSession.iKeyNeedUpdated &&
+ iCryptoIn.iEncodedKey.Compare( keyInfo ) != 0 )
+ {
+ MCEMM_DEBUG("Remote change the key");
+ iRemoteChangeKey = ETrue;
+ }
//check keyinfo mki
DecodeMKIValueL( aSecDec, EFalse, crypto );
MSG_IGNORE_RETURN()
--- a/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcesecuremediasession.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcesecuremediasession.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -49,8 +49,8 @@
iSession( aSession ),
iSecureInterface(aSecureInterface),
iKeyNeedUpdated( ETrue ),
- iCryptoContextUpdate (EFalse),
- iLSReadyToBind ( ETrue ),
+ iCryptoContextUpdate (EFalse ),
+ iLSReadyToBind ( EFalse ),
iStringTable( NULL )
{
@@ -451,8 +451,10 @@
stream->Data().iLinkedStream->Id() == secureStream->MediaStream().Id() ) )
{
//bind
- secureStream->BindCrypto(*stream);
-
+ if( secureStream->iWaitingBinding )
+ {
+ secureStream->BindCrypto(*stream);
+ }
}
}
}
--- a/multimediacommsengine/mmcesrv/mmcemediamanager/tsrc/ut_mediamanager/src/UT_CMceSecureDesStream.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/tsrc/ut_mediamanager/src/UT_CMceSecureDesStream.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -658,7 +658,7 @@
CleanupStack::PushL( mediaAnswer2 );
//iCryptoOut crypto is not set
iSecureStream->DecodeSecureSdpAnswerL(*mediaAnswer2);
- EUNIT_ASSERT( !iSecureStream->Session().iIsSecureSession );
+ EUNIT_ASSERT( iSecureStream->Session().iIsSecureSession );
EUNIT_ASSERT( iSecureStream->iCryptoIn.iMKLifeTime == 32 );
EUNIT_ASSERT( iSecureStream->iCryptoOut.iMKLifeTime == KDefalutMaterKeysLifeTime );
CleanupStack::PopAndDestroy(mediaAnswer2);
@@ -670,7 +670,7 @@
CleanupStack::PushL( mediaOffer );
iSecureSession->iCryptoContextUpdate = ETrue;
iSecureStream->EncodeSecureSdpL(*mediaOffer, EFalse );
- EUNIT_ASSERT( !iSecureStream->Session().iIsSecureSession );
+ EUNIT_ASSERT( iSecureStream->Session().iIsSecureSession );
CSdpMediaField* mediaAnswer3 = CSdpMediaField::DecodeL( KMceTestMeidaCryptoMultiple );
CleanupStack::PushL( mediaAnswer3 );
--- a/multimediacommsengine/mmcesrv/mmceserver/inc/mcenatsipsession.h Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/inc/mcenatsipsession.h Wed Sep 01 12:20:28 2010 +0100
@@ -252,6 +252,8 @@
void SetReservationStatus(TMceReturnStatus aStatus);
void ResumeNatUpdated();
+
+ void StateRollBack();
private: // Constructors
--- a/multimediacommsengine/mmcesrv/mmceserver/inc/mcenatsipstatemachine.h Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/inc/mcenatsipstatemachine.h Wed Sep 01 12:20:28 2010 +0100
@@ -87,6 +87,11 @@
*/
void ErrorOccurred();
+ /**
+ * Sets current Nat state.
+ */
+ void SetCurrentNatState(TMceNatStateIndex aStatus);
+
private:
CMceNatSipStateMachine();
--- a/multimediacommsengine/mmcesrv/mmceserver/src/mcenatsipsession.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/src/mcenatsipsession.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -873,4 +873,9 @@
MCESRV_DEBUG( "*** CMceNatSipSession::ResumeNatUpdated, Exit" )
}
+void CMceNatSipSession::StateRollBack()
+ {
+ iNatStateMachine->SetCurrentNatState( KMceNatStateConnected );
+ }
+
// End of File
--- a/multimediacommsengine/mmcesrv/mmceserver/src/mcenatsipstatemachine.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/src/mcenatsipstatemachine.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -188,3 +188,12 @@
{
iCurrentState = KMceNatStateIdle;
}
+
+// -----------------------------------------------------------------------------
+// CMceNatSipStateMachine::SetCurrentNatState
+// -----------------------------------------------------------------------------
+//
+void CMceNatSipStateMachine::SetCurrentNatState(TMceNatStateIndex aStatus)
+ {
+ iCurrentState = aStatus;
+ }
--- a/multimediacommsengine/mmcesrv/mmceserver/src/mcesipsession.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/src/mcesipsession.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -2046,9 +2046,11 @@
{
MCESRV_DEBUG("CMceSipSession::Updated, Entry");
- __ASSERT_ALWAYS( &aSession == iBody || &aSession == iNewBodyCandidate,
+
+ __ASSERT_ALWAYS( &aSession == &( ActiveBody() ) || &aSession == iNewBodyCandidate,
User::Panic( KMceServerPanic, KErrArgument ) );
-
+
+
TMceStateTransitionEvent event( *this, EMceMediaUpdated );
TRAPD( error, iStateMachine->ProcessL( event ) );
if ( error != KErrNone )
--- a/multimediacommsengine/mmcesrv/mmceserver/src/mcestateoffering.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/src/mcestateoffering.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -31,6 +31,7 @@
#include "mceclientserver.h"
#include "mcesip.h"
#include "mcesipsession.h"
+#include "mcenatsipsession.h"
#include "mcenatmacros.h"
#include "mcesdpsession.h"
#include "mcesrvlogs.h"
@@ -656,6 +657,11 @@
else
{
session.Actions().UpdateFailed();
+ if(session.IsNatSession())
+ {
+ CMceNatSipSession* natsession = static_cast <CMceNatSipSession*>( &session );
+ natsession->StateRollBack();
+ }
session.Actions().StateChanged( KMceStateEstablished );
session.Actions().ClientStateChangedL( CMceSession::EEstablished,
*session.Body(),
--- a/multimediacommsengine/mmcesrv/mmceserver/src/mcestateupdating.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/src/mcestateupdating.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -135,6 +135,17 @@
session.Actions().StateChanged(
KMceStateAcknowledgementRequired );
}
+ else
+ {
+ if ( session.ActiveBody().SecureSession() )
+ {
+ if( session.IsNatSession() )
+ {
+ session.ActiveBody().SecureSession()->iNatBind = ETrue;
+ }
+ session.ActiveBody().SecureSession()->iLSReadyToBind = ETrue;
+ }
+ }
}
else
{
--- 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 <user2@host>") );
+ params->AppendL( _L8("User <user@host>") );
+
+ 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();
}
--- a/multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCEStateOffering.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCEStateOffering.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -397,7 +397,7 @@
EUNIT_ASSERT ( iSipSession->WaitingMediaCallback() );
MCE_RESET_STUBS();
- // 200 OK while waiting for media callback
+ // 200 OK while waiting for media callback non early media
iSipSession->iSubState = CMceSipSession::EOffering;
iStorage->iMediaManagerUpdateStatus = KMceAsync;
@@ -416,6 +416,31 @@
EUNIT_ASSERT ( iSipSession->WaitingMediaCallback() );
MCE_RESET_STUBS();
+ // 200 OK while waiting for media callback with early media
+ iSipSession->iSubState = CMceSipSession::EOffering;
+ iStorage->iMediaManagerUpdateStatus = KMceAsync;
+ iState->iLastResponse = KMceSipRinging;
+ MCETestHelper::SetResponseL(
+ *iSipSession->iResponse,
+ KMceSipOK,
+ SipStrConsts::EPhraseOk,
+ ETrue, ETrue, 1 );
+
+ TMceStateTransitionEvent event2_2( *iSipSession, EMceResponse );
+ iState->EntryL( event2_2 );
+ MCE_ENTRYL_POSTCONDITION
+
+ MCE_ASSERT_STUBS( CMCETls::ENone /*mmaction*/,
+ CMCETls::ENone /*mmsdpaction*/,
+ SipStrConsts::EEmpty /*sentMethod*/,
+ KErrNotFound /*sentResponse*/);
+
+ EUNIT_ASSERT ( iStorage->iAckSent == EFalse );
+ EUNIT_ASSERT ( event2_1.Code() == EMceResponse );
+ EUNIT_ASSERT ( iSipSession->PendingTransactions().Count() == 1 );
+ EUNIT_ASSERT ( iSipSession->WaitingMediaCallback() );
+ MCE_RESET_STUBS();
+
// 200 OK with wrong SDP
iSipSession->iSubState = CMceSipSession::EOffering;
iSipSession->SetWaitingMediaCallback( EFalse );
@@ -612,6 +637,26 @@
EUNIT_ASSERT ( iSipSession->PendingTransactions().Count() == 4 );
MCE_RESET_STUBS();
+ // KMceSipRequestPending updating
+ iSipSession->iSubState = CMceSipSession::EUpdating;
+ iStorage->iMediaManagerUpdateStatus = KMceAsync;
+
+ MCETestHelper::ChangeResponseTypeL(
+ *iSipSession->iResponse->ResponseElements(),
+ KMceSipRequestPending,
+ SipStrConsts:: EPhraseBusyHere);
+
+ TMceStateTransitionEvent event3_4( *iSipSession, EMceErrorResponse );
+ iState->EntryL( event3_4 );
+ MCE_ENTRYL_POSTCONDITION_2
+ MCE_ASSERT_STUBS( CMCETls::ECloseSession /*mmaction*/,
+ CMCETls::ENone /*mmsdpaction*/,
+ SipStrConsts::EBye /*sentMethod*/,
+ KErrNotFound /*sentResponse*/);
+
+ EUNIT_ASSERT ( event3_4.Code() == EMceErrorResponse );
+ MCE_RESET_STUBS();
+
// KMceSipSessionIntervalTooSmall && dialog state ETerminated
iSipSession->Dialog()->Dialog().iState = CSIPDialog::ETerminated;
iSipSession->iSubState = CMceSipSession::EOffering;
@@ -985,8 +1030,20 @@
TMceStateTransitionEvent event15( *iSipSession, EMceResponse );
iState->ExitL( event15 );
- EUNIT_ASSERT ( iSipSession->CurrentState().Id() == KMceStateOffering );
-
+ EUNIT_ASSERT ( iSipSession->CurrentState().Id() == KMceStateOffering );
+
+ // EMceResponse with early media & waiting media call back
+ CSIPClientTransaction* clitransaction1_1 =
+ MCETestHelper::ClientTransactionLC( SipStrConsts::EInfo, KMceSipOK,
+ SipStrConsts::EPhraseOk, ETrue );
+ iSipSession->SetPendingTransactionL( clitransaction1_1 );
+ CleanupStack::Pop( clitransaction1_1 );
+ iSipSession->iResponse = clitransaction1_1;
+
+ TMceStateTransitionEvent event15_1( *iSipSession, EMceResponse );
+ iState->iReadyToSendACK = EFalse;
+ iState->ExitL( event15_1 );
+ EUNIT_ASSERT ( iSipSession->CurrentState().Id() == KMceStateOffering );
//EMceRedirectionResponse
CSIPClientTransaction* clitransaction2 =
--- a/multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/stubs/src/sipprofile.cpp Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/stubs/src/sipprofile.cpp Wed Sep 01 12:20:28 2010 +0100
@@ -270,7 +270,7 @@
// -----------------------------------------------------------------------------
//
CSIPProfile::CSIPProfile(CSIPProfileRegistryBase* aRegistry):
- iSIPProfileRegistry(aRegistry), iEnabled(EFalse)
+ iSIPProfileRegistry(aRegistry), iEnabled(EFalse), iContextId(1)
{
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/package_definition.xml Wed Sep 01 12:20:28 2010 +0100
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SystemDefinition schema="3.0.0">
+ <package id="ipappsrv" name="IP App Services" levels="framework generic server conn plugin">
+ <collection id="multimediacommscontroller" name="Multimedia Comms Controller" level="conn">
+ <component id="mmccinterface" filter="s60" name="MMCC Interface">
+ <!-- <unit bldFile="multimediacommscontroller/mmccinterface/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccinterface/tsrc/ut_interface/group"/> -->
+ </component>
+ <component id="mmccjitterbuffer" filter="s60" name="Jitter Buffer">
+ <!-- <unit bldFile="multimediacommscontroller/mmccjitterbuffer/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccjitterbuffer/tsrc/ut_jitterbuffer/group"/> -->
+ </component>
+ <component id="mmccqoscontroller" filter="s60" name="QoS Controller">
+ <!-- <unit bldFile="multimediacommscontroller/mmccqoscontroller/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccqoscontroller/tsrc/ut_qoscontroller/group"/> -->
+ </component>
+ <component id="mmccmultiplexer" filter="s60" name="MMCC Multiplexer">
+ <!-- <unit bldFile="multimediacommscontroller/mmccmultiplexer/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccmultiplexer/tsrc/ut_multiplexer/group"/> -->
+ </component>
+ <component id="mmccsubcontroller" filter="s60" name="MMCC Subcontroller">
+ <!-- <unit bldFile="multimediacommscontroller/mmccsubcontroller/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccsubcontroller/tsrc/ut_rtpmediaclock/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccsubcontroller/tsrc/ut_subcontroller/group"/> -->
+ </component>
+ <component id="mmcccontroller" filter="s60" name="MMCC Controller" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmcccontroller/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmcccontroller/tsrc/ut_controller/group"/> -->
+ </component>
+ <component id="mmccredpayloadformat" filter="s60" name="Redundancy Payload Format" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccredpayloadformat/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccredpayloadformat/tsrc/ut_redpayloadformat/group"/> -->
+ </component>
+ <component id="mmccamrpayloadformat" filter="s60" name="AMR Payload Format" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccamrpayloadformat/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccamrpayloadformat/tsrc/ut_amrpayloadformat/group"/> -->
+ </component>
+ <component id="mmccg711payloadformat" filter="s60" name="G711 Payload Format" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccg711payloadformat/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccg711payloadformat/tsrc/ut_g711payloadformat/group"/> -->
+ </component>
+ <component id="mmccg729payloadformat" filter="s60" name="G729 Payload Format" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccg729payloadformat/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccg729payloadformat/tsrc/ut_g729payloadformat/group"/> -->
+ </component>
+ <component id="mmccilbcpayloadformat" filter="s60" name="ILBC Payload Format" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccilbcpayloadformat/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccilbcpayloadformat/tsrc/ut_ilbcpayloadformat/group"/> -->
+ </component>
+ <component id="mmccdtmfpayloadformat" filter="s60" name="DTMF Payload Format" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccdtmfpayloadformat/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccdtmfpayloadformat/tsrc/ut_dtmfpayloadformat/group"/> -->
+ </component>
+ <component id="mmccrtpsourcesink" filter="s60" name="RTP Source Sink" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccrtpsourcesink/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccrtpsourcesink/tsrc/ut_rtpsourcesink/group"/> -->
+ </component>
+ <component id="mmccvideosourcesink" filter="s60" name="Video Source Sink" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccvideosourcesink/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccvideosourcesink/tsrc/ut_videosourcesink/group"/> -->
+ </component>
+ <component id="mmcch263payloadformat" filter="s60" name="H263 Payload Format" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmcch263payloadformat/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmcch263payloadformat/tsrc/ut_h263payloadformat/group"/> -->
+ </component>
+ <component id="mmccanypayloadformat" filter="s60" name="Any Payload Format" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccanypayloadformat/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccanypayloadformat/tsrc/ut_anypayloadformat/group"/> -->
+ </component>
+ <component id="mmccfilesourcesink" filter="s60" name="MMCC File Source Sink" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccfilesourcesink/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccfilesourcesink/tsrc/ut_filesourcesink/group"/> -->
+ </component>
+ <component id="mmccanysourcesink" filter="s60" name="Any Source Sink" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccanysourcesink/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccanysourcesink/tsrc/ut_anysourcesink/group"/> -->
+ </component>
+ <component id="mmccavcpayloadformat" filter="s60" name="AVC Payload Format" class="plugin">
+ <!-- <unit bldFile="multimediacommscontroller/mmccavcpayloadformat/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/mmccavcpayloadformat/tsrc/ut_avcpayloadformat/group"/> -->
+ </component>
+ <component id="multimediacommscontroller_build" filter="s60" name="Multimedia Comms Controller Build">
+ <!-- contents of this component need to be distributed out to the other commented-out bld.infs or the other components need to be collapsed into one -->
+ <unit bldFile="multimediacommscontroller/group"/>
+ </component>
+ <component id="multimediacommscontroller_test" filter="s60" name="Multimedia Comms Controller Test" purpose="development">
+ <!-- <unit bldFile="multimediacommscontroller/tsrc/testconsoles/mcpsubthreads/dptests/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/tsrc/testconsoles/mcpsubthreads/clienttests/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/tsrc/componenttests/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/tsrc/subcontrollerstub/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/tsrc/testconsoles/jitterbuffertestconsole/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/tsrc/testconsoles/rtpsourcesink/group"/> -->
+ <!-- <unit bldFile="multimediacommscontroller/tsrc/testconsoles/mcpconsole/group"/> -->
+ </component>
+ </collection>
+ <collection id="multimediacommsengine" name="Multimedia Comms Engine" level="generic">
+ <component id="mmcesrv" filter="s60" name="Multimedia Comms Engine Server">
+ <!-- <unit bldFile="multimediacommsengine/mmcesrv/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/mmcesrv/mmceevent/tsrc/ut_event/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/mmcesrv/mmceevent/tsrc/ut_event/sip_stub/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/mmcesrv/mmcemediamanager/tsrc/ut_mediamanager/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/group"/> -->
+ </component>
+ <component id="mmcecli" filter="s60" name="Multimedia Comms Engine Client">
+ <!-- <unit bldFile="multimediacommsengine/mmcecli/group"/> -->
+ </component>
+ <component id="mmcefloorctrlengine" filter="s60" name="MCE Floor Control Engine">
+ <!-- <unit bldFile="multimediacommsengine/mmcefloorctrlengine/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/mmcefloorctrlengine/tsrc/ut_floorctrlengine/fctestpplugin/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/mmcefloorctrlengine/tsrc/ut_floorctrlengine/fctestpplugin2/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/mmcefloorctrlengine/tsrc/ut_floorctrlengine/group"/> -->
+ </component>
+ <component id="mmcefloorctrlplugin" filter="s60" name="MCE Floor Control Plugin" class="plugin">
+ <!-- <unit bldFile="multimediacommsengine/mmcefloorctrlplugin/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/mmcefloorctrlplugin/tsrc/ut_floorctrlplugin/group"/> -->
+ </component>
+ <component id="multimediacommsengine_build" filter="s60" name="Multimedia Comms Engine Build">
+ <!-- contents of this component need to be distributed out to the other commented-out bld.infs or the other components need to be collapsed into one -->
+ <unit bldFile="multimediacommsengine/group"/>
+ </component>
+ <component id="multimediacommsengine_test" filter="s60" name="Multimedia Comms Engine Test" purpose="development">
+ <!-- <unit bldFile="multimediacommsengine/tsrc/mcetestui/mcetestuiplugin/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/mcetestui/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/testdriver/siptester/ttcnresolverplugin/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/mmctestdriver/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/mmctestdriver/mcetester/iceplugin_stub/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/mmctestdriver/mcetester/ttcnresolverplugin/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/testdriver/siptester/ttcnresolverplugin2/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/mcetestui/mcetestuiengine/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/testdriver/group/s60_public_sdk"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/mmctestdriver/mcetester/iceplugin_stub/tsrc/test/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/testdriver/group"/> -->
+ <!-- <unit bldFile="multimediacommsengine/tsrc/mmctestdriver/mcetester/voipplugin/group"/> -->
+ </component>
+ </collection>
+ <collection id="natfw" name="NAT Framework" level="framework">
+ <component id="natfwsettings" filter="s60" name="NAT Framework Settings" introduced="^2">
+ <!-- <unit bldFile="natfw/natfwsettings/group"/> -->
+ <!-- <unit bldFile="natfw/natfwsettings/tsrc/ut_cnatfwnatsettings/group"/> -->
+ </component>
+ <component id="natfwconnectionmultiplexer" filter="s60" name="NAT Framework Connection Multiplexer" introduced="^2">
+ <!-- <unit bldFile="natfw/natfwconnectionmultiplexer/group"/> -->
+ <!-- <unit bldFile="natfw/natfwconnectionmultiplexer/tsrc/muxtestconsole/group"/> -->
+ <!-- <unit bldFile="natfw/natfwconnectionmultiplexer/tsrc/ut_connectionmultiplexer/group"/> -->
+ </component>
+ <component id="natfwclient" filter="s60" name="NAT Framework Client" introduced="^2">
+ <!-- <unit bldFile="natfw/natfwclient/group"/> -->
+ <!-- <unit bldFile="natfw/natfwclient/tsrc/ut_natfwclient/group"/> -->
+ </component>
+ <component id="natfwsocketmediaconnwrapper" filter="s60" name="Socket Media Connection Wrapper" introduced="^2">
+ <!-- <unit bldFile="natfw/natfwsocketmediaconnwrapper/group"/> -->
+ <!-- <unit bldFile="natfw/natfwsocketmediaconnwrapper/tsrc/ut_socketmediaconnwrapper/group"/> -->
+ </component>
+ <component id="natfwunsaf_protocols" filter="s60" name="UNSAF Protocols" introduced="^2">
+ <!-- consider expanding name to UNilateral Self- Address Fixing Protocols -->
+ <!-- <unit bldFile="natfw/natfwunsaf_protocols/group"/> -->
+ <!-- <unit bldFile="natfw/natfwunsaf_protocols/tsrc/ut_unsaf_codec/group"/> -->
+ <!-- <unit bldFile="natfw/natfwunsaf_protocols/tsrc/ut_unsaf_transport/group"/> -->
+ </component>
+ <component id="natfwstunturnclient" filter="s60" name="STUN TURN Client" introduced="^2">
+ <!-- <unit bldFile="natfw/natfwstunturnclient/group"/> -->
+ <!-- <unit bldFile="natfw/natfwstunturnclient/tsrc/ut_stunturnclient/group"/> -->
+ </component>
+ <component id="natfwstunserver" filter="s60" name="STUN Server" introduced="^2">
+ <!-- <unit bldFile="natfw/natfwstunserver/group"/> -->
+ <!-- <unit bldFile="natfw/natfwstunserver/tsrc/ut_cnatfwstunsrv/group"/> -->
+ </component>
+ <component id="natfwicecandidatehandler" filter="s60" name="ICE Candidate Handler" class="plugin" introduced="^2">
+ <!-- <unit bldFile="natfw/natfwicecandidatehandler/group"/> -->
+ <!-- <unit bldFile="natfw/natfwicecandidatehandler/tsrc/ut_icecandidatehandler/group"/> -->
+ </component>
+ <component id="natfwstunplugin" filter="s60" name="STUN Plugin" class="plugin" introduced="^2">
+ <!-- <unit bldFile="natfw/natfwstunplugin/group"/> -->
+ <!-- <unit bldFile="natfw/natfwstunplugin/tsrc/ut_cnatfwstunplugin/group"/> -->
+ </component>
+ <component id="natfwturnplugin" filter="s60" name="TURN Plugin" class="plugin" introduced="^2">
+ <!-- <unit bldFile="natfw/natfwturnplugin/group"/> -->
+ <!-- <unit bldFile="natfw/natfwturnplugin/tsrc/ut_cnatfwturnplugin/group"/> -->
+ </component>
+ <component id="natfw_build" filter="s60" name="NAT Framework Build" introduced="^2">
+ <!-- contents of this component need to be distributed out to the other commented-out bld.infs or the other components need to be collapsed into one -->
+ <unit bldFile="natfw/group"/>
+ </component>
+ <component id="natfw_test" filter="s60" name="NAT Framework Test" purpose="development" introduced="^2">
+ <!-- <unit bldFile="natfw/tsrc/natfwtestconsoles/natfwtestconsole/group"/> -->
+ </component>
+ </collection>
+ <collection id="natplugins" name="NAT Plugins" level="plugin">
+ <!-- are the extra test units in here needed at all? Either incorperate into main unit as test projects or remove-->
+ <component id="natpcliprovisioningnatfwadapter" filter="s60" name="Client Provisioning NAT Framework Traversal Adapter" class="plugin" introduced="^2">
+ <unit bldFile="natplugins/natpcliprovisioningnatfwadapter/group"/>
+ <!-- <unit bldFile="natplugins/natpcliprovisioningnatfwadapter/tsrc/t_natfwtraversaladapter/group"/> -->
+ </component>
+ <component id="natpdevmgmtnatfwadapter" filter="s60" name="Device Management NAT Framework Traversal Adapter" class="plugin">
+ <unit bldFile="natplugins/natpdevmgmtnatfwadapter/group"/>
+ <!-- <unit bldFile="natplugins/natpdevmgmtnatfwadapter/tsrc/ut_cnsmldmnatfwtraversaladapter/group"/> -->
+ </component>
+ <component id="natptraversalcontroller" filter="s60" name="NAT Traversal Controller" class="plugin">
+ <unit bldFile="natplugins/natptraversalcontroller/group"/>
+ <!-- <unit bldFile="natplugins/natptraversalcontroller/tsrc/ut_nattraversalcontroller/group"/> -->
+ </component>
+ <component id="natpnatfwsdpprovider" filter="s60" name="NAT Framework SDP Provider" class="plugin">
+ <unit bldFile="natplugins/natpnatfwsdpprovider/group"/>
+ <!-- <unit bldFile="natplugins/natpnatfwsdpprovider/tsrc/testconsole/group"/> -->
+ <!-- <unit bldFile="natplugins/natpnatfwsdpprovider/tsrc/ut_natfwsdpprovider/group"/> -->
+ </component>
+ </collection>
+ <collection id="ipappsrv_info" name="IP App Services Info" level="plugin">
+ <component id="ipappsrv_metadata" name="IP App Services Metadata" class="config" introduced="^2" purpose="development" target="desktop">
+ <unit mrp="ipappsrv_info/ipappsrv_metadata/ipappsrv_metadata.mrp"/>
+ </component>
+ </collection>
+ </package>
+</SystemDefinition>