# HG changeset patch # User hgs # Date 1273838255 -10800 # Node ID f1578314b8da3a80cafe2d265a987ad73c846688 # Parent bfe1f539b7210233692ea3fff4c793aca229760b 201019 diff -r bfe1f539b721 -r f1578314b8da group/bld.inf --- a/group/bld.inf Mon May 03 12:50:54 2010 +0300 +++ b/group/bld.inf Fri May 14 14:57:35 2010 +0300 @@ -20,6 +20,7 @@ #include "../ipappprotocols_plat/group/bld.inf" #include "../rtp/group/bld.inf" +#include "../realtimenetprots/rtp/group/bld.inf" #include "../realtimenetprots/sipfw/Group/bld.inf" #include "../sipplugins/group/bld.inf" diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/rtp/cfrtp/group/bld.inf --- a/realtimenetprots/rtp/cfrtp/group/bld.inf Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/rtp/cfrtp/group/bld.inf Fri May 14 14:57:35 2010 +0300 @@ -27,7 +27,7 @@ ../inc/rtp_proto_id.h SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(rtp_proto_id.h) #ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY ../inc/rtp_subconparams.h SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(rtp_subconparams.h) -./cfrtp.iby /epoc32/rom/include/cfrtp.iby +./cfrtp.iby CORE_MW_LAYER_IBY_EXPORT_PATH(cfrtp.iby) PRJ_MMPFILES cfrtp.mmp diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/rtp/group/bld.inf --- a/realtimenetprots/rtp/group/bld.inf Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/rtp/group/bld.inf Fri May 14 14:57:35 2010 +0300 @@ -25,10 +25,10 @@ PRJ_EXPORTS -./rtp.iby /epoc32/rom/include/rtp.iby +./rtp.iby CORE_MW_LAYER_IBY_EXPORT_PATH(rtp.iby) PRJ_TESTEXPORTS -./te_rtp.iby /epoc32/rom/include/te_rtp.iby +./te_rtp.iby /epoc32/rom/include/te_rtp.iby ./rtptest.xml z:/testdata/configs/rtp/rtptest.xml diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/rtp/rtpcore/group/bld.inf --- a/realtimenetprots/rtp/rtpcore/group/bld.inf Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/rtp/rtpcore/group/bld.inf Fri May 14 14:57:35 2010 +0300 @@ -19,7 +19,7 @@ */ PRJ_EXPORTS -./rtpcore.iby /epoc32/rom/include/rtpcore.iby +./rtpcore.iby CORE_MW_LAYER_IBY_EXPORT_PATH(rtpcore.iby) PRJ_MMPFILES rtpcore.mmp diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/rtp/shimrtp/eabi/rtpmu.def --- a/realtimenetprots/rtp/shimrtp/eabi/rtpmu.def Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/rtp/shimrtp/eabi/rtpmu.def Fri May 14 14:57:35 2010 +0300 @@ -116,4 +116,5 @@ _ZN20RRtpSession_Internal36SetPrePostProcessingRegisterCallbackEP26MPrePostProcessingCallback @ 115 NONAME _ZN20RRtpSession_Internal5OpenLER11RSocketServR9TSockAddrS3_iR14RSubConnectioniRK6TDesC8 @ 116 NONAME _ZN14RRtpSendPacket5CloseEv @ 117 NONAME + _ZNK11RRtcpRRItem10SenderSSRCEv @ 118 NONAME diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/rtp/shimrtp/group/bld.inf --- a/realtimenetprots/rtp/shimrtp/group/bld.inf Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/rtp/shimrtp/group/bld.inf Fri May 14 14:57:35 2010 +0300 @@ -21,7 +21,7 @@ PRJ_EXPORTS -./shimrtp.iby /epoc32/rom/include/shimrtp.iby +./shimrtp.iby CORE_MW_LAYER_IBY_EXPORT_PATH(shimrtp.iby) ../inc/rtp.h SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(rtp.h) #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS ../inc/rtpsession_internal.h SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(rtpsession_internal.h) diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/rtp/shimrtp/src/rtp/rtcp.cpp --- a/realtimenetprots/rtp/shimrtp/src/rtp/rtcp.cpp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/rtp/shimrtp/src/rtp/rtcp.cpp Fri May 14 14:57:35 2010 +0300 @@ -70,6 +70,12 @@ return iPtr->dlsr; } +EXPORT_C TUint RRtcpRRItem::SenderSSRC() const + { + __RTP_LOG(_L("RRtcpSRItem::SenderSSRC() ... ")); + return AboutSSRC(); + } + /******/ EXPORT_C RRtcpRRPart::RRtcpRRPart(TRtcpRRPart& aRR) :iRRPart(aRR) diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/rtp/shimrtp/src/stubs/rtcp_stub.cpp --- a/realtimenetprots/rtp/shimrtp/src/stubs/rtcp_stub.cpp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/rtp/shimrtp/src/stubs/rtcp_stub.cpp Fri May 14 14:57:35 2010 +0300 @@ -70,6 +70,11 @@ return 0; } +EXPORT_C TUint RRtcpRRItem::SenderSSRC() const + { + ASSERT(0); + return 0; + } /******/ EXPORT_C RRtcpRRPart::RRtcpRRPart(TRtcpRRPart& aRR) :iRRPart(aRR) diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/Data/101F413C.txt Binary file realtimenetprots/sipfw/Data/101F413C.txt has changed diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/Data/101f413c.cre Binary file realtimenetprots/sipfw/Data/101f413c.cre has changed diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/Group/bld.inf --- a/realtimenetprots/sipfw/Group/bld.inf Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/Group/bld.inf Fri May 14 14:57:35 2010 +0300 @@ -35,8 +35,6 @@ ../Data/101F413C.txt z:/private/10202be9/101f413c.txt // ProfileAgent's cenrep configuration file for expiry duration ../Data/2001F889.txt z:/private/10202be9/2001f889.txt -// ProfileAgent's default cre file -../Data/101f413c.cre z:/private/10202be9/101f413c.cre // ConfML files ../conf/sipframework.confml MW_LAYER_EXPORTS_CONFML(sipframework.confml) @@ -46,8 +44,8 @@ ../conf/sipframework_2001f889.crml MW_LAYER_EXPORTS_CRML(sipframework_2001f889.crml) // SIP iby-files -../rom/sipsw.iby /epoc32/rom/include/sipsw.iby -../rom/siph2lanbearermonitor.iby /epoc32/rom/include/siph2lanbearermonitor.iby +../rom/sipsw.iby CORE_MW_LAYER_IBY_EXPORT_PATH(sipsw.iby) +../rom/siph2lanbearermonitor.iby CORE_MW_LAYER_IBY_EXPORT_PATH(siph2lanbearermonitor.iby) // SDP Codec API ../SDP/api/SdpAttributeField.h SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(sdpattributefield.h) diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/ProfileAgent/Group/sipietfagent.mmp --- a/realtimenetprots/sipfw/ProfileAgent/Group/sipietfagent.mmp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Group/sipietfagent.mmp Fri May 14 14:57:35 2010 +0300 @@ -60,6 +60,6 @@ VENDORID 0x70000001 -CAPABILITY ProtServ NetworkServices ReadDeviceData WriteDeviceData +CAPABILITY ProtServ NetworkServices ReadDeviceData WriteDeviceData NetworkControl SMPSAFE diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/ProfileAgent/Group/sipimsagent.mmp --- a/realtimenetprots/sipfw/ProfileAgent/Group/sipimsagent.mmp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Group/sipimsagent.mmp Fri May 14 14:57:35 2010 +0300 @@ -83,9 +83,10 @@ LIBRARY commsdat.lib LIBRARY flogger.lib LIBRARY efsrv.lib +LIBRARY satclient.lib VENDORID 0x70000001 -CAPABILITY ProtServ NetworkServices ReadDeviceData WriteDeviceData +CAPABILITY ProtServ NetworkServices ReadDeviceData WriteDeviceData NetworkControl SMPSAFE diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/ProfileAgent/Group/sipprofilefsm.mmp --- a/realtimenetprots/sipfw/ProfileAgent/Group/sipprofilefsm.mmp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Group/sipprofilefsm.mmp Fri May 14 14:57:35 2010 +0300 @@ -58,6 +58,6 @@ VENDORID 0x70000001 -CAPABILITY ProtServ NetworkServices ReadDeviceData WriteDeviceData +CAPABILITY ProtServ NetworkServices ReadDeviceData WriteDeviceData NetworkControl SMPSAFE diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/ProfileAgent/Group/sipprofileserver.mmp --- a/realtimenetprots/sipfw/ProfileAgent/Group/sipprofileserver.mmp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Group/sipprofileserver.mmp Fri May 14 14:57:35 2010 +0300 @@ -97,7 +97,7 @@ VENDORID 0x70000001 -CAPABILITY ProtServ NetworkServices ReadDeviceData WriteDeviceData +CAPABILITY ProtServ NetworkServices ReadDeviceData WriteDeviceData NetworkControl // MACRO PLAT_SEC_TEST diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/ProfileAgent/Group/sipproxyrsv.mmp --- a/realtimenetprots/sipfw/ProfileAgent/Group/sipproxyrsv.mmp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Group/sipproxyrsv.mmp Fri May 14 14:57:35 2010 +0300 @@ -43,6 +43,6 @@ VENDORID 0x70000001 -CAPABILITY ProtServ NetworkServices ReadDeviceData WriteDeviceData +CAPABILITY ProtServ NetworkServices ReadDeviceData WriteDeviceData NetworkControl SMPSAFE diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileCacheItem.h --- a/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileCacheItem.h Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileCacheItem.h Fri May 14 14:57:35 2010 +0300 @@ -290,6 +290,18 @@ */ TBool IsShutdownInitiated() const; + /** + * System is about to go in Offline Mode + */ + void OfflineInitiated(TBool aOfflineInitiated); + + /** + * Tells if system is about to be Offline. + * @return ETrue if system Offline has been initiated + * EFalse otherwise + */ + TBool IsOfflineInitiated() const; + /** * System is about to be shut down. */ @@ -554,11 +566,7 @@ * @param aStatus Status of the profile */ void HandleProfileError(TInt aError, - CSIPConcreteProfile& aProfile); - /** - * Function resets the boolean variable iIsShutdownInitiated - */ - void ResetShutdownvariable(); + CSIPConcreteProfile& aProfile); private: @@ -647,6 +655,9 @@ // ETrue if system shutdown has been initiated TBool iIsShutdownInitiated; + //ETrue if system offline has been initiated + TBool iIsOfflineInitiated; + // ETrue if Rfs has been initiated TBool iIsRfsInprogress; diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileServerCore.h --- a/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileServerCore.h Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileServerCore.h Fri May 14 14:57:35 2010 +0300 @@ -493,7 +493,7 @@ *Starts timer of type CDeltaTimer, *which callback is ConnectionCloseTimerExpired function */ - void StartConnectionCloseTimer(); + void StartConnectionCloseTimer(TInt aValue); /** * A callback for CDeltaTimer @@ -770,9 +770,23 @@ */ TBool CheckIapSettings(TUint32 aProfileId); + /** + * Issues the change of APN to PrimaryAPN + */ void UsePrimaryApn(TUint32 aIapId); - + + /** + * Issues the change of APN to SecondaryAPN + */ void UseBackupApn( TUint32 aIapId, TBool aFatalFailure = ETrue ); + + /** + * Compares the two plugin typr info + * @returns ETrue if the match completely + * EFalse otherwise + */ + static TBool Compare(const TSIPProfileTypeInfo& first, + const TSIPProfileTypeInfo& second); private: // Data @@ -821,8 +835,6 @@ //ApnManager CSIPApnManager* iApnManager; // iBackupApnSettings; RArray iWaitForApnSettings; - - TBool iOfflineEventReceived; TBool iFeatMgrInitialized; diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCacheItem.cpp --- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCacheItem.cpp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCacheItem.cpp Fri May 14 14:57:35 2010 +0300 @@ -87,6 +87,7 @@ iIsVpnInUse = EFalse; iInitialApnSelected = EFalse; iApnSwitchEnabled = EFalse; + iIsOfflineInitiated = EFalse; iDeltaTimerEntry.Set(iDeltaTimerCallBack); } @@ -1357,14 +1358,6 @@ iServerCore.SendErrorEvent( *this, CSIPConcreteProfile::ERegistrationInProgress, KErrCancel ); } -// ----------------------------------------------------------------------------- -// CSIPProfileCacheItem::ResetShutdownvariable -// ----------------------------------------------------------------------------- -// -void CSIPProfileCacheItem::ResetShutdownvariable() - { - iIsShutdownInitiated = EFalse; - } // ----------------------------------------------------------------------------- // CSIPProfileCacheItem::DefaultSNAPL @@ -1384,3 +1377,28 @@ PROFILE_DEBUG3("CSIPProfileCacheItem::DefaultSNAPL with Value: ", aSnapId) CleanupStack::PopAndDestroy(); } + +// ----------------------------------------------------------------------------- +// CSIPProfileCacheItem::OfflineInitiated +// ----------------------------------------------------------------------------- +// +void CSIPProfileCacheItem::OfflineInitiated(TBool aOfflineInitiated) + { + if(aOfflineInitiated) + { + iIsOfflineInitiated = ETrue; + iCurrentState->ShutdownInitiated(*this); + } + else + iIsOfflineInitiated = EFalse; + } + +// ----------------------------------------------------------------------------- +// CSIPProfileCacheItem::IsOfflineInitiated +// ----------------------------------------------------------------------------- +// +TBool CSIPProfileCacheItem::IsOfflineInitiated() const + { + return iIsOfflineInitiated; + } + diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp --- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp Fri May 14 14:57:35 2010 +0300 @@ -57,6 +57,7 @@ const TInt KMicroSecInSec = 1000000; const TInt KIdleTimer = 2; +const TInt KOfflineTimer = 5; // ============================ MEMBER FUNCTIONS =============================== @@ -171,8 +172,6 @@ iNotify = CSIPProfileStorageSecureBackup::NewL(this); iServer = CSIPProfileCSServer::NewL(*this); - - iOfflineEventReceived = EFalse; PROFILE_DEBUG1("ProfileServer started") } @@ -291,8 +290,11 @@ } } + + //For Profiles which were in RegInProgress and has moved to Registered State, + //needs to be deregistered if Offline or RFs or Vpn if in Use has been triggered. TBool eventCompleted = EFalse; - if(item && (item->IsRfsInprogress() || iOfflineEventReceived || + if(item && (item->IsRfsInprogress() || item->IsOfflineInitiated() || (FeatureManager::FeatureSupported( KFeatureIdFfImsDeregistrationInVpn )&& item->IsVpnInUse()))) { @@ -305,19 +307,30 @@ { count--; } - else if (status == CSIPConcreteProfile::ERegistered ) + else if (status == CSIPConcreteProfile::ERegistered) { - iProfileCache[i]->ShutdownInitiated(); - } - } + if(item->IsOfflineInitiated()) + { + //Don't do anything. If the ProfileStatusEvent = Registered in Offline, it + //will only be for WLAN so don't deregister it. If ProfileStatusEvent = Deregistered + //means application triggered deregistration so ProfileAgent should not attempt registering it. + } + else + { + iProfileCache[i]->ShutdownInitiated(); + } + } //end if unregistered if ( !count ) eventCompleted = ETrue; - } + } //end for + } //end outer if + + if(eventCompleted) { if (item->IsRfsInprogress()) - StartConnectionCloseTimer(); - else if(iOfflineEventReceived) + StartConnectionCloseTimer(KIdleTimer); + else if(item->IsOfflineInitiated() ) ConfirmSystemstateMonitor(CSipSystemStateMonitor::ESystemState); else if((FeatureManager::FeatureSupported( KFeatureIdFfImsDeregistrationInVpn )&& item->IsVpnInUse())) @@ -444,50 +457,56 @@ { PROFILE_DEBUG3("CSIPProfileServerCore::SystemVariableUpdated System State changed to value", aValue) - //If the SystemState is Offline, turn the boolean variable to true so that Profile-Server - //can indicate System State monitor that event processing is completed, provided all the - //profiles have got deregistered - if (CSipSystemStateMonitor::ESystemOffline == aValue) - iOfflineEventReceived = ETrue; - - if ( aVariable == CSipSystemStateMonitor::ESystemState && - (aValue == CSipSystemStateMonitor::ESystemShuttingDown || - aValue == CSipSystemStateMonitor::ESystemOffline - )) + if ( aVariable == CSipSystemStateMonitor::ESystemState ) { - TBool waitForDeregistration = EFalse; - for (TInt i = 0; i < iProfileCache.Count(); i++) - { - iProfileCache[i]->ShutdownInitiated(); - CSIPConcreteProfile::TStatus status; - iPluginDirector->State(status, iProfileCache[i]->UsedProfile()); - if(status != CSIPConcreteProfile::EUnregistered) - waitForDeregistration = ETrue; - } - if(!waitForDeregistration) - { - ConfirmSystemstateMonitor(CSipSystemStateMonitor::ESystemState); - } - } - //If the System State is Online, register all the profiles in always on mode - else if(aVariable == CSipSystemStateMonitor::ESystemState && - aValue == CSipSystemStateMonitor::ESystemOnline) - { - iOfflineEventReceived = EFalse; - for (TInt i = 0; i < iProfileCache.Count(); i++) - { - iProfileCache[i]->ResetShutdownvariable(); - CSIPProfileCacheItem* item = iProfileCache[i]; - if (iProfileCache[i]->IsReferred()) - { - TRAPD(err, item->StartRegisterL(*iWaitForIAP, *iRegInProg, ETrue)); - if (err != KErrNone) - { - HandleAsyncError(*item,CSIPConcreteProfile::ERegistrationInProgress,err); - } - } - } - } + // If the System is Shutting down + if(aValue == CSipSystemStateMonitor::ESystemShuttingDown) + { + for (TInt i = 0; i < iProfileCache.Count(); i++) + { + iProfileCache[i]->ShutdownInitiated(); + } + } //end if Shutdown + + //If the System receives Offline event + if(aValue == CSipSystemStateMonitor::ESystemOffline) + { + StartConnectionCloseTimer(KOfflineTimer); + TBool waitForDeregistration = EFalse; + for (TInt i = 0; i < iProfileCache.Count(); i++) + { + iProfileCache[i]->OfflineInitiated(ETrue); + CSIPConcreteProfile::TStatus status; + iPluginDirector->State(status, iProfileCache[i]->UsedProfile()); + if(status != CSIPConcreteProfile::EUnregistered) + waitForDeregistration = ETrue; + } + if(!waitForDeregistration) + { + ConfirmSystemstateMonitor(CSipSystemStateMonitor::ESystemState); + } + } //end if Offline + + //If the System receives Online event + if(aValue == CSipSystemStateMonitor::ESystemOnline) + { + for (TInt i = 0; i < iProfileCache.Count(); i++) + { + CSIPProfileCacheItem* item = iProfileCache[i]; + item->OfflineInitiated(EFalse); + CSIPConcreteProfile::TStatus status; + iPluginDirector->State(status, item->UsedProfile()); + if (item->IsReferred() && status == CSIPConcreteProfile::EUnregistered) + { + TRAPD(err, item->StartRegisterL(*iWaitForIAP, *iRegInProg, ETrue)); + if (err != KErrNone) + { + HandleAsyncError(*item,CSIPConcreteProfile::ERegistrationInProgress,err); + } + } + } + } //end if Online + } //end if SystemState else if(aVariable == CSipSystemStateMonitor::ERfsState) { if(aValue == CSipSystemStateMonitor::ERfsStarted) @@ -622,7 +641,12 @@ CImplementationInformation* ecomInfo = infoArray[i]; TSIPProfileTypeInfo info; ConvertTypeInfoL(*ecomInfo, info); - array.AppendL(info); + TIdentityRelation identityRelation(CSIPProfileServerCore::Compare); + TInt alreadyExits = array.Find(info,identityRelation); + if(alreadyExits == KErrNotFound) + { + array.AppendL(info); + } } } CleanupStack::Pop(&infoArray); @@ -1067,7 +1091,15 @@ } } else - User::LeaveIfError(KErrNotSupported); + { + // At this point the registration has failed fatally already and profile will be in + // unregistered state. Since we cann't do any regisrtation related activity and + // not to lose user's updated data we are doing this. + if(item->UsedProfile().Status() == CSIPConcreteProfile::EUnregistered) + { + item->ClearOldProfile(); + } + } } else { @@ -2123,11 +2155,11 @@ // CSIPProfileServerCore::StartConnectionCloseTimer // ----------------------------------------------------------------------------- // -void CSIPProfileServerCore::StartConnectionCloseTimer() +void CSIPProfileServerCore::StartConnectionCloseTimer(TInt aValue) { PROFILE_DEBUG1("CSIPProfileServerCore::StartConnectionCloseTimer") iDeltaTimer->Remove(iDeltaTimerEntry); - TTimeIntervalMicroSeconds32 interval(KMicroSecInSec * KIdleTimer); + TTimeIntervalMicroSeconds32 interval(KMicroSecInSec * aValue); iDeltaTimer->Queue(interval, iDeltaTimerEntry); } @@ -2139,7 +2171,33 @@ { PROFILE_DEBUG1("CSIPProfileServerCore::ConnectionCloseTimerExpired") CSIPProfileServerCore* self = reinterpret_cast(aPtr); - self->ConfirmSystemstateMonitor(CSipSystemStateMonitor::ERfsState); + + TBool IsOffline = self->iProfileCache[0]->IsOfflineInitiated(); + if(IsOffline) + { + self->ConfirmSystemstateMonitor(CSipSystemStateMonitor::ESystemState); + for (TInt i = 0; i < self->iProfileCache.Count(); i++) + { + CSIPProfileCacheItem* item = self->iProfileCache[i]; + CSIPConcreteProfile::TStatus status; + self->iPluginDirector->State( status, self->iProfileCache[i]->UsedProfile() ); + item->OfflineInitiated(EFalse); + if (item->IsReferred() && (!self->iApnManager->IsIapGPRSL(item->Profile().IapId())) + && status == CSIPConcreteProfile::EUnregistered) + { + TRAPD(err, item->StartRegisterL(*(self->iWaitForIAP), *(self->iRegInProg), ETrue)); + if (err != KErrNone) + { + self->HandleAsyncError(*item,CSIPConcreteProfile::ERegistrationInProgress,err); + } + } + else + {} + } //end for + }//end Outer If + else + self->ConfirmSystemstateMonitor(CSipSystemStateMonitor::ERfsState); + return ETrue; } @@ -2149,9 +2207,8 @@ // void CSIPProfileServerCore::ConfirmSystemstateMonitor( CSipSystemStateMonitor::TSystemVariable aVariable) - { - iSystemStateMonitor->EventProcessingCompleted( - aVariable, 0, *this); + { + iSystemStateMonitor->EventProcessingCompleted(aVariable, 0, *this); } // ---------------------------------------------------------------------------- @@ -2353,11 +2410,34 @@ } // ---------------------------------------------------------------------------- +// CSIPProfileServerCore::Compare +// ---------------------------------------------------------------------------- +// +TBool CSIPProfileServerCore::Compare(const TSIPProfileTypeInfo& first, + const TSIPProfileTypeInfo& second) + { + TInt result = first.iSIPProfileName.Compare(second.iSIPProfileName); + return ( 0 == result && first.iSIPProfileClass == second.iSIPProfileClass); + } + +// ---------------------------------------------------------------------------- // CSIPProfileServerCore::IsUpdateAllowed // ---------------------------------------------------------------------------- // TBool CSIPProfileServerCore::IsUpdateAllowed( CSIPConcreteProfile *aProfile ) { - PROFILE_DEBUG1("CSIPIMSProfileAgent::IsUpdateAllowed, enter") - return !(iApnManager->IsFailed(aProfile->IapId())); + PROFILE_DEBUG1("CSIPProfileServerCore::IsUpdateAllowed, enter") + TBool allowed(ETrue); + CSIPProfileCacheItem* item = ProfileCacheItem(aProfile->Id()); + if(item) + { + CSIPConcreteProfile& profile = item->LatestProfile(); + TBool iapIdChange(profile.IapId()!=aProfile->IapId()); + if(iapIdChange && + (iApnManager->IsFailed(aProfile->IapId()) || iApnManager->IsFailed(profile.IapId()))) + { + allowed = EFalse; + } + } + return allowed; } diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileStateUnregistered.cpp --- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileStateUnregistered.cpp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileStateUnregistered.cpp Fri May 14 14:57:35 2010 +0300 @@ -114,7 +114,7 @@ TBool isVpnInUse = (FeatureManager::FeatureSupported( KFeatureIdFfImsDeregistrationInVpn ) && aItem.IsVpnInUse()); - if ( aItem.IsReferred() && !aItem.IsShutdownInitiated() && + if ( aItem.IsReferred() && !aItem.IsShutdownInitiated() && !aItem.IsOfflineInitiated() && !aItem.IsRfsInprogress() && !isVpnInUse) { aItem.ClearOldProfile(); diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp --- a/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp Fri May 14 14:57:35 2010 +0300 @@ -610,7 +610,12 @@ // Sent-by is now set for the first time, must set the port too if ( receivePort == 0 ) { - receivePort = KDefaultSipPort; + //If the Transport in the outgoing request is TLS and port value = 0 + //provide 5061 for TLS and 5060 for UDP/TCP + if(SIPStrings::StringF(SipStrConsts::ETLS) == viaHeader->Transport()) + receivePort = KDefaultSipsPort; + else + receivePort = KDefaultSipPort; } } if ( receivePort ) diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/conf/sipframework_101f413c.crml Binary file realtimenetprots/sipfw/conf/sipframework_101f413c.crml has changed diff -r bfe1f539b721 -r f1578314b8da realtimenetprots/sipfw/rom/sipsw.iby --- a/realtimenetprots/sipfw/rom/sipsw.iby Mon May 03 12:50:54 2010 +0300 +++ b/realtimenetprots/sipfw/rom/sipsw.iby Fri May 14 14:57:35 2010 +0300 @@ -77,7 +77,7 @@ ECOM_PLUGIN(siptls.dll,siptls.rsc) -#ifdef SYMBIAN_EXCLUDE_IPSEC +#ifndef __IPSEC REM Feature IPSEC not included in this rom #else ECOM_PLUGIN(sipipsec.dll,sipipsec.rsc) @@ -103,14 +103,13 @@ ECOM_PLUGIN(sipietfagnt.dll,sipietfagnt.rsc) +#ifndef FF_EXCLUDE_STANDARD_IMSAGENT ECOM_PLUGIN(sipimsagnt.dll,sipimsagnt.rsc) +#endif /* Resources - XML for secure profile backup*/ data=ZPRIVATE\101F413C\backup_registration.xml private\101F413C\backup_registration.xml -// ProfileAgent's default cre file -data=DATAZ_\private\10202be9\101f413c.cre private\10202be9\101f413c.cre - #endif /* SYMBIAN_EXCLUDE_SIP*/ #endif /* __SIPSW_IBY__ */ diff -r bfe1f539b721 -r f1578314b8da sipplugins/group/bld.inf --- a/sipplugins/group/bld.inf Mon May 03 12:50:54 2010 +0300 +++ b/sipplugins/group/bld.inf Fri May 14 14:57:35 2010 +0300 @@ -19,7 +19,6 @@ #include "../sippwlanplugin/group/bld.inf" -#include "../sippsipsettingsui/group/bld.inf" #include "../sippdevmgmtsipadapter/group/bld.inf" #include "../sippsystemstatemonitor/group/bld.inf" #include "../sippsipadapter/group/bld.inf" diff -r bfe1f539b721 -r f1578314b8da sipproviderplugins/sipprovider/sipconnectionplugins/group/bld.inf --- a/sipproviderplugins/sipprovider/sipconnectionplugins/group/bld.inf Mon May 03 12:50:54 2010 +0300 +++ b/sipproviderplugins/sipprovider/sipconnectionplugins/group/bld.inf Fri May 14 14:57:35 2010 +0300 @@ -26,7 +26,7 @@ ../data/esock_sip.cmi z:/private/101f7988/esock_sip.cmi -../group/sipproviders.iby /epoc32/rom/include/sipproviders.iby +../group/sipproviders.iby CORE_MW_LAYER_IBY_EXPORT_PATH(sipproviders.iby) PRJ_MMPFILES sipproviders.mmp diff -r bfe1f539b721 -r f1578314b8da sipproviderplugins/sipprovider/sipdummyprt/group/bld.inf --- a/sipproviderplugins/sipprovider/sipdummyprt/group/bld.inf Mon May 03 12:50:54 2010 +0300 +++ b/sipproviderplugins/sipprovider/sipdummyprt/group/bld.inf Fri May 14 14:57:35 2010 +0300 @@ -21,13 +21,13 @@ */ PRJ_EXPORTS -../group/SIPDummyPRT.iby /epoc32/rom/include/sipdummyprt.iby +../group/SIPDummyPRT.iby CORE_MW_LAYER_IBY_EXPORT_PATH(sipdummyprt.iby) ../data/sip.providers.esk z:/private/101f7989/esock/sip.providers.esk #ifndef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY -../group/siphlapi.iby /epoc32/rom/include/siphlapi.iby +../group/siphlapi.iby CORE_MW_LAYER_IBY_EXPORT_PATH(siphlapi.iby) ../data/esock_sip.cmi z:/private/101f7988/esock_sip.cmi #endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY diff -r bfe1f539b721 -r f1578314b8da sipproviderplugins/sipprovider/sipstatemachine/group/bld.inf --- a/sipproviderplugins/sipprovider/sipstatemachine/group/bld.inf Mon May 03 12:50:54 2010 +0300 +++ b/sipproviderplugins/sipprovider/sipstatemachine/group/bld.inf Fri May 14 14:57:35 2010 +0300 @@ -25,5 +25,5 @@ SipStateMachine.mmp PRJ_EXPORTS -../group/SipStateMachine.iby /epoc32/rom/include/sipstatemachine.iby +../group/SipStateMachine.iby CORE_MW_LAYER_IBY_EXPORT_PATH(sipstatemachine.iby) ../inc/siphlerr.h SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(siphlerr.h) \ No newline at end of file