# HG changeset patch # User Pat Downey # Date 1283340028 -3600 # Node ID 4da1f672912e29c1b06945034f5376eecb4c5f17 # Parent 3f7c7e6eea8a4479d84b9cb7ed65ade20c47c8f8 Revert incorrect RCL_3 drop: Revision: 201032 Kit: 201035 diff -r 3f7c7e6eea8a -r 4da1f672912e ipappsrv_info/ipappsrv_metadata/ipappsrv_metadata.mrp --- /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 diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommscontroller/mmcccontroller/src/mccscreen.cpp --- 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 ); diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommscontroller/mmccvideosourcesink/group/videosourcesink.mmp --- 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 diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommscontroller/mmccvideosourcesink/src/mccredrawhandler.cpp --- 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 ); } // ----------------------------------------------------------------------------- diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmceshared/src/mcecomamrwbcodec.cpp --- 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. diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmcemediamanager/inc/mcesecuredesstream.h --- 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; diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmcemediamanager/inc/mcesecuremediasession.h --- 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: diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediamanager.cpp --- 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; } diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmcemediamanager/src/mcesdpsession.cpp --- 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 ); diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmcemediamanager/src/mcesecuredesstream.cpp --- 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() diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmcemediamanager/src/mcesecuremediasession.cpp --- 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); + } } } } diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmcemediamanager/tsrc/ut_mediamanager/src/UT_CMceSecureDesStream.cpp --- 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 ); diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmceserver/inc/mcenatsipsession.h --- 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 diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmceserver/inc/mcenatsipstatemachine.h --- 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(); diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmceserver/src/mcenatsipsession.cpp --- 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 diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmceserver/src/mcenatsipstatemachine.cpp --- 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; + } diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmceserver/src/mcesipsession.cpp --- 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 ) diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmceserver/src/mcestateoffering.cpp --- 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 ( &session ); + natsession->StateRollBack(); + } session.Actions().StateChanged( KMceStateEstablished ); session.Actions().ClientStateChangedL( CMceSession::EEstablished, *session.Body(), diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmceserver/src/mcestateupdating.cpp --- 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 { 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(); } diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCEStateOffering.cpp --- 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 = diff -r 3f7c7e6eea8a -r 4da1f672912e multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/stubs/src/sipprofile.cpp --- 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) { } diff -r 3f7c7e6eea8a -r 4da1f672912e package_definition.xml --- /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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +