Binary file realtimenetprots/sipfw/Data/101f413c.cre has changed
Binary file realtimenetprots/sipfw/Data/2001F889.txt has changed
--- a/realtimenetprots/sipfw/Group/bld.inf Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/Group/bld.inf Mon May 03 12:50:54 2010 +0300
@@ -35,13 +35,15 @@
../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)
../conf/sipframework_101f413c.crml MW_LAYER_EXPORTS_CRML(sipframework_101f413c.crml)
../conf/sipframework_101fed88.crml MW_LAYER_EXPORTS_CRML(sipframework_101fed88.crml)
../conf/sipframework_10282ee7.crml MW_LAYER_EXPORTS_CRML(sipframework_10282ee7.crml)
-// Note: sipframework_2001f889.crml cannot be created yet until spec revision
+../conf/sipframework_2001f889.crml MW_LAYER_EXPORTS_CRML(sipframework_2001f889.crml)
// SIP iby-files
../rom/sipsw.iby /epoc32/rom/include/sipsw.iby
--- a/realtimenetprots/sipfw/ProfileAgent/ApnManager/inc/sipapnmanager.h Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/ApnManager/inc/sipapnmanager.h Mon May 03 12:50:54 2010 +0300
@@ -90,7 +90,6 @@
MSIPApnChangeObserver& iObserver;
RPointerArray<CSIPApnConfigurationHandler> iHandlers;
- TBool iInitialApnChangeFailed;
#ifdef CPPUNIT_TEST
friend class CSIPApnManagerTest;
--- a/realtimenetprots/sipfw/ProfileAgent/ApnManager/src/sipapnconfigurationhandler.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/ApnManager/src/sipapnconfigurationhandler.cpp Mon May 03 12:50:54 2010 +0300
@@ -210,7 +210,7 @@
//
TBool CSIPApnConfigurationHandler::HasPendingTasks() const
{
- return MonitoringState() != EMonitoringIdle;
+ return (MonitoringState() != EMonitoringIdle || IsFailed());
}
// -----------------------------------------------------------------------------
@@ -306,6 +306,8 @@
{
CActiveScheduler::Add( this );
iIapId = aIapId;
+ iIsFailed = EFalse;
+ iIsFatalFailure = EFalse;
}
// -----------------------------------------------------------------------------
@@ -798,7 +800,7 @@
//
TBool CSIPApnConfigurationHandler::IsFailed() const
{
- return iIsFailed;
+ return iIsFatalFailure;
}
// -----------------------------------------------------------------------------
--- a/realtimenetprots/sipfw/ProfileAgent/Client/Api/sipmanagedprofile.h Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/Client/Api/sipmanagedprofile.h Mon May 03 12:50:54 2010 +0300
@@ -69,6 +69,15 @@
* The value is of type TBool. */
const TUint32 KSIPProfileLocked = 504;
+/**
+* Defines how autoregistration profile behaves on home network/roaming
+* situations. If value is ETrue, automatic registration is not allowed
+* while roaming.
+* The value is of type TBool
+* This constant will have no effect from Symbian ^ 3 onwards.
+* Registrations in Roaming network can be controlled using "Data Use When Roaming" setting. */
+const TUint32 KSIPAllowAutoRegistrationOnlyOnHomeNetwork = 505;
+
// FORWARD DECLARATIONS
class CSIPManagedProfileRegistry;
--- a/realtimenetprots/sipfw/ProfileAgent/Client/Src/SIPRemoteProfile.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/Client/Src/SIPRemoteProfile.cpp Mon May 03 12:50:54 2010 +0300
@@ -56,21 +56,23 @@
TInt RSIPProfile::Connect()
{
TBool stopTrying(EFalse);
- TInt err(KErrNone);
+ TInt sessionConnectErr(KErrNone);
+ TInt serverStartErr(KErrNone);
const TInt KMaxRetries(10);
TInt retryCount(0);
while (!stopTrying && retryCount < KMaxRetries)
{
- err = CreateSession(KSipProfileServerName,Version());
- if ((err != KErrNotFound) && (err != KErrServerTerminated))
+ sessionConnectErr = CreateSession(KSipProfileServerName,Version());
+ if ((sessionConnectErr != KErrNotFound)
+ && (sessionConnectErr != KErrServerTerminated))
{
stopTrying = ETrue;
}
else
{
- err = TSIPProfileServerStarter::Start();
- if ((err != KErrNone) && (err != KErrAlreadyExists))
+ serverStartErr = TSIPProfileServerStarter::Start();
+ if ((serverStartErr != KErrNone) && (serverStartErr != KErrAlreadyExists))
{
stopTrying = ETrue;
}
@@ -78,8 +80,8 @@
retryCount++;
}
- iConnected = (err == KErrNone);
- return err;
+ iConnected = (sessionConnectErr == KErrNone);
+ return sessionConnectErr;
}
// -----------------------------------------------------------------------------
--- a/realtimenetprots/sipfw/ProfileAgent/IETF_Agent/src/Sipietfprofilecontext.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/IETF_Agent/src/Sipietfprofilecontext.cpp Mon May 03 12:50:54 2010 +0300
@@ -567,11 +567,7 @@
if (response)
{
retry = RetryRegister( &aTransaction, responseCode);
- if( retry )
- {
- iCurrentState->ErrorOccured(*this, responseCode);
- }
- else
+ if( !retry )
{
if (responseCode >= K300MultipleChoices)
{
--- a/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Inc/Sipimsprofileusimprovider.h Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Inc/Sipimsprofileusimprovider.h Mon May 03 12:50:54 2010 +0300
@@ -77,8 +77,9 @@
/**
* Starts the retrieving of authorization information
+ * @return ETrue if request was made
*/
- void RequestL(TBool aUseSIM=EFalse);
+ TBool RequestL(TBool aUseUSIM=EFalse);
/**
* Cancels pending operations
--- a/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Inc/sipprofileimsauthorization.h Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Inc/sipprofileimsauthorization.h Mon May 03 12:50:54 2010 +0300
@@ -71,7 +71,17 @@
* Get
*/
RMobilePhone::CImsAuthorizationInfoV5& Response();
-
+
+ /**
+ * Checks whether IMSAuthorization is supported
+ */
+ TBool IsImsAuthorizationAllowed();
+
+ /*
+ * Resets IMS Authorization value
+ */
+ void ResetImsAuthorizationAllowed(TBool aStatus);
+
public: //From CActive
/**
@@ -110,6 +120,7 @@
MSIPProfileIMSAuthorizationDataObserver& iObserver;
RMobilePhone& iPhone;
+ TBool iIMSAuthorizationNotSupported;
};
#endif // end of SIPPROFILEIMSAUTHORIZATION_H
--- a/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Inc/sipprofilesimauthorization.h Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Inc/sipprofilesimauthorization.h Mon May 03 12:50:54 2010 +0300
@@ -70,7 +70,17 @@
void RequestL();
RMobilePhone::TMobilePhoneSubscriberId& IMSI();
-
+
+ /*
+ * Quires whether SIM Authorization is allowed
+ */
+ TBool IsSIMAuthorizationAllowed();
+
+ /*
+ * Resets SIM Authorization value
+ */
+ void ResetSIMAuthorizationAllowed(TBool aStatus);
+
public: //From CActive
/**
@@ -111,6 +121,8 @@
*/
MSIPProfileIMSAuthorizationDataObserver& iObserver;
RMobilePhone& iPhone;
+ TBool iSIMAuthorizationNotSupported;
+
private: //For testing purpose
#ifdef CPPUNIT_TEST
friend class CSIPProfileSIMAuthorizationStub;
--- a/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/Sipimsprofileusimprovider.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/Sipimsprofileusimprovider.cpp Mon May 03 12:50:54 2010 +0300
@@ -73,20 +73,18 @@
User::LeaveIfError( iPhone.Open( aTelServer, aPhoneInfo.iName ) );
- TUint32 caps;
+ TUint32 caps(0);
User::LeaveIfError(iPhone.GetIccAccessCaps(caps));
if(caps & RMobilePhone::KCapsSimAccessSupported)
{
+ PROFILE_DEBUG1("CSIPProfileUsimProvider::ConstructL, sim supported")
iSIMSupported = ETrue;
}
- if(caps & RMobilePhone::KCapsRUimAccessSupported)
- {
- }
-
//usim supported
if(caps & RMobilePhone::KCapsUSimAccessSupported)
- {
+ {
+ PROFILE_DEBUG1("CSIPProfileUsimProvider::ConstructL, usim supported")
iUSimSupported = ETrue;
}
@@ -116,6 +114,8 @@
{
User::Leave(KErrNotSupported);
}
+
+ PROFILE_DEBUG1("CSIPProfileUsimProvider::ConstructL, exit")
}
// ----------------------------------------------------------------------------
@@ -153,34 +153,56 @@
// CSIPProfileUsimProvider::RequestL
// ----------------------------------------------------------------------------
//
-void CSIPProfileUsimProvider::RequestL(TBool /*aUseSIM*/)
+TBool CSIPProfileUsimProvider::RequestL(TBool aUseUSIM)
{
- TBool requestmade = EFalse;
- if (!iProfileSIMRecord.SIMPrivateIdentity().Length())
- {
- if (iAuthorizationSIM)
- {
- iAuthorizationSIM->RequestL();
- requestmade = ETrue;
- }
- else
- {
- User::Leave(KErrArgument);
- }
- }
-
- if (IsUsimSupported())
+
+ TBool requestFailed = EFalse;
+ TBool credentialsExists = EFalse;
+
+ if ( aUseUSIM )
{
- if (!iProfileSIMRecord.PrivateIdentity().Length())
- {
- iAuthorization->RequestL();
- requestmade = ETrue;
- }
+ if (!iProfileSIMRecord.PrivateIdentity().Length())
+ {
+ if(iAuthorization->IsImsAuthorizationAllowed())
+ {
+ iAuthorization->RequestL();
+ }
+ else
+ {
+ requestFailed = ETrue;
+ }
+ }
+ else
+ {
+ credentialsExists = ETrue;
+ }
}
- if (!requestmade)
+
+ else
+ {
+ if (!iProfileSIMRecord.SIMPrivateIdentity().Length())
+ {
+ if(iAuthorizationSIM->IsSIMAuthorizationAllowed())
+ {
+ iAuthorizationSIM->RequestL();
+ }
+ else
+ {
+ requestFailed = ETrue;
+ }
+ }
+ else
+ {
+ credentialsExists = ETrue;
+ }
+ }
+
+ if (credentialsExists)
{
iObserver.AsyncDeltaTimer();
}
+
+ return requestFailed;
}
// ----------------------------------------------------------------------------
@@ -209,11 +231,16 @@
//
void CSIPProfileUsimProvider::AuthorizedL()
{
+ PROFILE_DEBUG1("CSIPProfileUsimProvider::AuthorizedL")
+
if (iAuthorization)
{
RMobilePhone::CImsAuthorizationInfoV5& authorization =
iAuthorization->Response();
+ PROFILE_DEBUG3( "CSIPProfileUsimProvider::AuthorizedL, datasource:",
+ authorization.iAuthenticationDataSource )
+
iProfileSIMRecord.SetPrivateIdL(authorization.iIMPI);
iProfileSIMRecord.SetFirstPublicUserNameL(authorization.iIMPUArray[0]);
iProfileSIMRecord.SetHomeNetworkDomainNameL(
@@ -223,6 +250,8 @@
iObserver.AuthorizedL();
}
+
+ PROFILE_DEBUG1("CSIPProfileUsimProvider::AuthorizedL, exit")
}
// ----------------------------------------------------------------------------
@@ -249,6 +278,8 @@
//
void CSIPProfileUsimProvider::DeriveValuesL()
{
+ PROFILE_DEBUG1("CSIPProfileUsimProvider::DeriveValuesL")
+
_LIT8(Kimsmnc, "ims.mnc");
_LIT8(Kmcc, ".mcc");
_LIT8(K3gppnetwork, ".3gppnetwork.org");
@@ -327,7 +358,9 @@
delete temp;
temp = NULL;
iObserver.AuthorizedL();
- }
+
+ PROFILE_DEBUG1("CSIPProfileUsimProvider::DeriveValuesL, exit")
+ }
// ----------------------------------------------------------------------------
// CSIPProfileUsimProvider::AuthorizationFailed
@@ -358,6 +391,14 @@
void CSIPProfileUsimProvider::AuthInfoUpdatedL()
{
iProfileSIMRecord.ResetISIMValuesL();
+ if(iAuthorizationSIM)
+ {
+ iAuthorizationSIM->ResetSIMAuthorizationAllowed(EFalse);
+ }
+ if(iAuthorization)
+ {
+ iAuthorization->ResetImsAuthorizationAllowed(EFalse);
+ }
iObserver.UpdateRegistrationsL();
if (!iProfileSIMRecord.PrivateIdentity().Length())
{
--- a/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/sipimsprofileagent.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/sipimsprofileagent.cpp Mon May 03 12:50:54 2010 +0300
@@ -135,6 +135,8 @@
}
__ASSERT_ALWAYS(found, User::Leave(KErrNotFound));
+ PROFILE_DEBUG1("CSIPIMSProfileAgent::ConstructL, etel ok")
+
iXMLParser = CSIPNotifyXmlBodyParser::NewL();
iInit = CSIPPrflInitState::NewL(*this);
iResolvingProxies = CSIPPrflResolvingProxiesState::NewL(*this);
@@ -155,6 +157,8 @@
iDeregInProgress->LinkStates(*iInit);
iRegDelayRequested->LinkStates(*iInit);
+ PROFILE_DEBUG1("CSIPIMSProfileAgent::ConstructL, states ok")
+
iSIMRecord = CSIPProfileSIMRecord::NewL();
iProfileQueueHandling = CSIPProfileQueueHandling::NewL(*this);
TRAPD(err, iUsimProvider =
@@ -164,7 +168,10 @@
{
User::Leave(err);
}
+
+ PROFILE_DEBUG1("CSIPIMSProfileAgent::ConstructL, sim ok")
iConfigExtension = NULL;
+ PROFILE_DEBUG1("CSIPIMSProfileAgent::ConstructL, exit")
}
// -----------------------------------------------------------------------------
@@ -200,6 +207,7 @@
delete iHttpDigest;
delete iSIP;
SIPStrings::Close();
+ PROFILE_DEBUG1("CSIPIMSProfileAgent::~CSIPIMSProfileAgent, exit")
}
// -----------------------------------------------------------------------------
@@ -386,15 +394,24 @@
if (iUsimProvider &&
!CSIPIMSProfileContext::IsHttpDigestSettingsConfigured(aSIPConcreteProfile))
{
+ TBool requestFailed = EFalse;
if (!iUsimProvider->IsUsimSupported())
{
iSIMWaitForAuthorizedArray.AppendL(&aSIPConcreteProfile);
- iUsimProvider->RequestL(ETrue);
+ requestFailed = iUsimProvider->RequestL(EFalse);
+ if(requestFailed)
+ {
+ AuthorizationSIMFailed();
+ }
}
else
{
iUSimWaitForAuthorizedArray.AppendL(&aSIPConcreteProfile);
- iUsimProvider->RequestL();
+ requestFailed = iUsimProvider->RequestL(ETrue);
+ if(requestFailed)
+ {
+ AuthorizationUSIMFailed();
+ }
}
}
else
@@ -1116,7 +1133,8 @@
if (RegAllowedWithUSIMorISIML(*profile))
{
- if (profile->IsSecurityNegotiationEnabled() &&
+ PROFILE_DEBUG1("CSIPIMSProfileAgent::AuthorizedL ISIM Registration Allowed")
+ if (profile->IsSecurityNegotiationEnabled() &&
!CSIPIMSProfileContext::IsHttpDigestSettingsConfigured(
*profile))
{
@@ -1208,7 +1226,7 @@
TInt error = 0;
//function called after async call to request for authorization info
CSIPConcreteProfile* profile = NULL;
- while (iUSimWaitForAuthorizedArray.Count() > 0)
+ for(TUint i = iUSimWaitForAuthorizedArray.Count(); i>0; i--)
{
profile = RemoveFirstProfileFromArray(
iUSimWaitForAuthorizedArray );
@@ -1221,14 +1239,15 @@
TerminateAndErrorEvent( *profile, KErrNotSupported );
}
}
- if (!error)
+ TBool requestFailed = EFalse;
+ if ( iSIMWaitForAuthorizedArray.Count() > 0 && !error )
{
- TRAP(error, iUsimProvider->RequestL());
+ TRAP(error, requestFailed = iUsimProvider->RequestL(EFalse));
}
- if(error)
+
+ if(error || requestFailed)
{
AuthorizationSIMFailed();
- AuthorizationUSIMFailed();
}
}
--- a/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/sipprofileimsauthorization.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/sipprofileimsauthorization.cpp Mon May 03 12:50:54 2010 +0300
@@ -60,9 +60,13 @@
//
CSIPProfileIMSAuthorization::~CSIPProfileIMSAuthorization()
{
+ PROFILE_DEBUG1("CSIPProfileIMSAuthorization::~CSIPProfileIMSAuthorization")
+
Cancel();
delete iData;
delete iRetriever;
+
+ PROFILE_DEBUG1("CSIPProfileIMSAuthorization::~CSIPProfileIMSAuthorization, exit")
}
// ----------------------------------------------------------------------------
@@ -71,8 +75,12 @@
//
void CSIPProfileIMSAuthorization::ConstructL()
{
+ PROFILE_DEBUG1("CSIPProfileIMSAuthorization::ConstructL")
+
+ iIMSAuthorizationNotSupported = EFalse;
iData = RMobilePhone::CImsAuthorizationInfoV5::NewL();
CActiveScheduler::Add( this );
+ PROFILE_DEBUG1("CSIPProfileIMSAuthorization::ConstructL, exit")
}
// ----------------------------------------------------------------------------
@@ -112,14 +120,24 @@
//
void CSIPProfileIMSAuthorization::RunL()
{
- if ( iStatus.Int() == KErrNone && iRetriever->AuthInfoValid())
+ PROFILE_DEBUG3( "CSIPProfileIMSAuthorization::RunL, status:", iStatus.Int() )
+
+ TInt status( iStatus.Int() );
+ if ( status != KErrNone )
+ {
+ iIMSAuthorizationNotSupported = ETrue;
+ }
+
+ if ( status == KErrNone && iRetriever->AuthInfoValid() )
{
iObserver.AuthorizedL();
}
else
{
- User::LeaveIfError(iStatus.Int());
- }
+ User::LeaveIfError( iStatus.Int() );
+ }
+
+ PROFILE_DEBUG1( "CSIPProfileIMSAuthorization::RunL, exit")
}
// ----------------------------------------------------------------------------
@@ -128,6 +146,8 @@
//
TInt CSIPProfileIMSAuthorization::RunError(TInt aError)
{
+ PROFILE_DEBUG3( "CSIPProfileIMSAuthorization::RunError, err:", aError )
+
iObserver.AuthorizationFailed();
if(aError == KErrNoMemory)
{
@@ -146,4 +166,22 @@
iRetriever = NULL;
}
+// ----------------------------------------------------------------------------
+// CSIPProfileIMSAuthorization::ResetImsAuthorizationAllowed
+// ----------------------------------------------------------------------------
+//
+void CSIPProfileIMSAuthorization::ResetImsAuthorizationAllowed(TBool aStatus)
+ {
+ iIMSAuthorizationNotSupported = aStatus;
+ }
+
+// ----------------------------------------------------------------------------
+// CSIPProfileIMSAuthorization::IsImsAuthorizationSupported
+// ----------------------------------------------------------------------------
+//
+TBool CSIPProfileIMSAuthorization::IsImsAuthorizationAllowed()
+ {
+ return !iIMSAuthorizationNotSupported;
+ }
+
// End of File
--- a/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/sipprofilesimauthorization.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/IMS_Agent/Src/sipprofilesimauthorization.cpp Mon May 03 12:50:54 2010 +0300
@@ -61,8 +61,12 @@
//
CSIPProfileSIMAuthorization::~CSIPProfileSIMAuthorization()
{
+ PROFILE_DEBUG1("CSIPProfileSIMAuthorization::~CSIPProfileSIMAuthorization")
+
Cancel();
iIMSI.Zero();
+
+ PROFILE_DEBUG1("CSIPProfileSIMAuthorization::~CSIPProfileSIMAuthorization, exit")
}
// ----------------------------------------------------------------------------
@@ -71,6 +75,9 @@
//
void CSIPProfileSIMAuthorization::ConstructL()
{
+ PROFILE_DEBUG1("CSIPProfileSIMAuthorization::ConstructL")
+
+ iSIMAuthorizationNotSupported = EFalse;
TUint32 caps(0);
User::LeaveIfError(iPhone.GetIdentityCaps(caps));
if(!(caps & RMobilePhone::KCapsGetSubscriberId))
@@ -78,6 +85,8 @@
User::Leave(KErrNotSupported);
}
CActiveScheduler::Add( this );
+
+ PROFILE_DEBUG1("CSIPProfileSIMAuthorization::ConstructL, exit")
}
// ----------------------------------------------------------------------------
@@ -108,14 +117,19 @@
//
void CSIPProfileSIMAuthorization::RunL()
{
+ PROFILE_DEBUG3("CSIPProfileSIMAuthorization::RunL, status:", iStatus.Int() )
+
if ( iStatus.Int() == KErrNone)
{
iObserver.AuthorizedSubscriberIdL();
}
else
- {
+ {
+ iSIMAuthorizationNotSupported = ETrue;
User::LeaveIfError(iStatus.Int());
}
+
+ PROFILE_DEBUG1("CSIPProfileSIMAuthorization::RunL, exit")
}
// ----------------------------------------------------------------------------
@@ -131,7 +145,25 @@
}
return KErrNone;
}
-
+
+// ----------------------------------------------------------------------------
+// CSIPProfileSIMAuthorization::IsImsAuthorizationSupported
+// ----------------------------------------------------------------------------
+//
+TBool CSIPProfileSIMAuthorization::IsSIMAuthorizationAllowed()
+ {
+ return !iSIMAuthorizationNotSupported;
+ }
+
+// ----------------------------------------------------------------------------
+// CSIPProfileSIMAuthorization::ResetSIMAuthorizationAllowed
+// ----------------------------------------------------------------------------
+//
+void CSIPProfileSIMAuthorization::ResetSIMAuthorizationAllowed(TBool aStatus)
+ {
+ iSIMAuthorizationNotSupported = aStatus;
+ }
+
// ----------------------------------------------------------------------------
// CSIPProfileSIMAuthorization::DoCancel
// ----------------------------------------------------------------------------
--- a/realtimenetprots/sipfw/ProfileAgent/Profile/Inc/SipProfileLog.inl Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/Profile/Inc/SipProfileLog.inl Mon May 03 12:50:54 2010 +0300
@@ -21,9 +21,7 @@
*/
-#if !defined(__FLOG_ACTIVE)
#include <flogger.h>
-#endif
#include <e32base.h>
#include <bautils.h>
--- a/realtimenetprots/sipfw/ProfileAgent/Profile/Src/sipconcreteprofile.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/Profile/Src/sipconcreteprofile.cpp Mon May 03 12:50:54 2010 +0300
@@ -14,7 +14,7 @@
// Name : sipconcreteprofile.cpp
// Part of : SIP / SIP Profile Agent / SIP Concrete Profile
// Implementation
-// Version : %version: 3.1.1 %
+// Version : %version: 3.1.2 %
//
@@ -195,7 +195,6 @@
newCopy->SetId(Id());
newCopy->SetStatus(Status());
newCopy->SetContextId(ContextId());
- newCopy->SetDefault(IsDefault());
newCopy->SetLastRegistrationError(LastRegistrationError());
}
else
--- a/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileCacheItem.h Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileCacheItem.h Mon May 03 12:50:54 2010 +0300
@@ -546,7 +546,7 @@
/**
* Switches state machine to unregistered state
*/
- void SwitchToUnregisteredState();
+ TBool SwitchToUnregisteredState(TBool aResume);
/**
* Handles Errors caused by faulty profiles
--- a/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileServerCore.h Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/Server/Inc/SipProfileServerCore.h Mon May 03 12:50:54 2010 +0300
@@ -243,7 +243,16 @@
* transferred.
*/
const CSIPConcreteProfile* Profile(TUint32 aProfileId) const;
-
+
+ /**
+ * Gets modifiable profile object pointer
+ * This method should only be used when you need to update profile.
+ * @param aProfileId a required profile id
+ * @return Found profile, or NULL if not found. Ownership is not
+ * transferred.
+ */
+ CSIPConcreteProfile* Profile(TUint32 aProfileId);
+
/**
* Gets default profile
* Ownership is not transferred.
--- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCSSession.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCSSession.cpp Mon May 03 12:50:54 2010 +0300
@@ -250,11 +250,33 @@
HBufC8* profileBuf = iHelper.ReadLC(ESipProfileItcArgProfile,aMessage);
CSIPConcreteProfile* profile = InternalizeProfileLC(*profileBuf);
TBool updateAllowed = iCore.IsUpdateAllowed(profile);
+
+ //Save the dynamic Data before UpdateProfile happens
+ TBool isProfile = EFalse;
+ const CSIPConcreteProfile* aProfile = iCore.Profile(profile->Id());
+ CDesC8ArrayFlat* aRegisteredAORs = NULL;
+ HBufC8* aNegotiatedSecurityMechanism = NULL;
+ CSIPConcreteProfile::TStatus status = CSIPConcreteProfile::EUnregistered;
+ if(aProfile)
+ {
+ isProfile = ETrue;
+ status = aProfile->Status();
+ //Copy registeredAors
+ const MDesC8Array& aArray = aProfile->RegisteredAORs();
+ aRegisteredAORs = new (ELeave) CDesC8ArrayFlat(1);
+ CleanupStack::PushL(aRegisteredAORs);
+ for (TInt i = 0; i < aArray.MdcaCount(); i++)
+ {
+ aRegisteredAORs->AppendL(aArray.MdcaPoint(i));
+ }
+ //Copy NegotiatedSecurityMechanism
+ aNegotiatedSecurityMechanism = aProfile->NegotiatedSecurityMechanism().AllocL();
+ CleanupStack::PushL(aNegotiatedSecurityMechanism);
+ }
+
if(updateAllowed)
{
- TBool canProceed = iCore.UpdateProfileToStoreL(profile, *this);
- CleanupStack::Pop(profile);
- CleanupStack::PopAndDestroy(profileBuf);
+ TBool canProceed = iCore.UpdateProfileToStoreL(profile, *this);
if (canProceed)
{
iCore.UpdateRegistrationL(profile->Id(), *this);
@@ -264,6 +286,27 @@
{
User::Leave(KErrNotSupported);
}
+
+ //If UpdateProfile has not resulted into deregistration and reregistration
+ //copy the dynamic data extraced from previous copy of concrete profile to new copy
+ //of concrete profile so that dynamic information is not lost.
+ CSIPConcreteProfile* aUpdatedProfile = iCore.Profile(profile->Id());
+ if(aUpdatedProfile && (status == aUpdatedProfile->Status()))
+ {
+ if(0 == aUpdatedProfile->RegisteredAORs().MdcaCount() && aRegisteredAORs)
+ aUpdatedProfile->SetRegisteredAORsL(*aRegisteredAORs);
+ if(0 == aUpdatedProfile->NegotiatedSecurityMechanism().Length() && aNegotiatedSecurityMechanism)
+ aUpdatedProfile->SetNegotiatedSecurityMechanismL(*aNegotiatedSecurityMechanism);
+ }
+
+ if(isProfile)
+ {
+ CleanupStack::PopAndDestroy(aNegotiatedSecurityMechanism);
+ CleanupStack::PopAndDestroy(aRegisteredAORs);
+ }
+
+ CleanupStack::Pop(profile);
+ CleanupStack::PopAndDestroy(profileBuf);
}
// -----------------------------------------------------------------------------
--- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCacheItem.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCacheItem.cpp Mon May 03 12:50:54 2010 +0300
@@ -183,7 +183,7 @@
{
iProfile->SetLastRegistrationError(KErrNoMemory);
iCurrentState->RefreshIAPsFailed(*this);
- SwitchToUnregisteredState();
+ SwitchToUnregisteredState(EFalse);
PassAlrErrorToClient(KErrNoMemory, Profile().IapId());
}
@@ -764,9 +764,12 @@
if (iCurrentState->ErrorOccurred(*this, aError))
{
PROFILE_DEBUG1("ProfileCacheItem::HandleError go unregistered")
-
- SwitchToUnregisteredState();
-
+
+ if(SwitchToUnregisteredState(ETrue))
+ {
+ return EFalse;
+ }
+
if (aError != KErrNone)
{
iProfile->SetLastRegistrationError(aError);
@@ -1279,16 +1282,29 @@
// would register again (if auto-registration on).
// -----------------------------------------------------------------------------
//
-void CSIPProfileCacheItem::SwitchToUnregisteredState()
+TBool CSIPProfileCacheItem::SwitchToUnregisteredState(TBool aResume)
{
CSIPProfileState& unregistered = iServerCore.UnregisteredState();
iProfile->SetStatus(unregistered.Name());
iCurrentState = &unregistered;
- SetSnapRetryCounter(0);
-
+
+ if(iQueuedProfile)
+ {
+ if(aResume)
+ {
+ TRAPD(err, ResumeL());
+ if(KErrNone == err)
+ return ETrue;
+ }
+ delete iProfile;
+ iProfile = iQueuedProfile;
+ iQueuedProfile = NULL;
+ }
// No need to monitor SNAP anymore.
+ SetSnapRetryCounter(0);
StopSnapMonitoring();
RemoveAllUsers();
+ return EFalse;
}
// -----------------------------------------------------------------------------
--- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp Mon May 03 12:50:54 2010 +0300
@@ -760,7 +760,7 @@
{
CSIPConcreteProfile* defaultProfile = FindDefaultProfile();
- if ( defaultProfile && defaultProfile != aProfile )
+ if ( defaultProfile && defaultProfile->Id() != aProfile->Id() )
{
defaultProfile->SetDefault( EFalse );
}
@@ -786,6 +786,22 @@
return NULL;
}
+// ----------------------------------------------------------------------------------
+// CSIPProfileServerCore::Profile. Returns modifiable ConcreteProfile object pointer
+// ----------------------------------------------------------------------------------
+//
+CSIPConcreteProfile*
+CSIPProfileServerCore::Profile(TUint32 aProfileId)
+ {
+ CSIPProfileCacheItem* item = ProfileCacheItem(aProfileId);
+ if (item)
+ {
+ return &item->Profile();
+ }
+ return NULL;
+ }
+
+
// -----------------------------------------------------------------------------
// CSIPProfileServerCore::ProfileDefaultL
// -----------------------------------------------------------------------------
@@ -1076,7 +1092,7 @@
&& item->IsVpnInUse());
const CSIPConcreteProfile* profile = Profile(aProfileId);
- if(FeatureManager::FeatureSupported( KFeatureIdFfSipApnSwitching )
+ if(profile && FeatureManager::FeatureSupported( KFeatureIdFfSipApnSwitching )
&& CheckApnSwitchEnabledL( *profile ) && !item->IsRfsInprogress() && !isVpnInUse )
{
PROFILE_DEBUG1("CSIPProfileServerCore::EnableProfileL, SwichEnabled")
@@ -1140,7 +1156,7 @@
if(CSIPConcreteProfile::EUnregistered != item->UsedProfile().Status())
{
PROFILE_DEBUG3("CSIPProfileServerCore::ForceDisableProfileL, Forcibly disabling profile", aProfileId);
- item->SwitchToUnregisteredState();
+ item->SwitchToUnregisteredState(EFalse);
iPluginDirector->TerminateHandling(item->UsedProfile());
item->ClearMigrationProfiles();
iPluginDirector->StartTimerForCleanup();
@@ -2167,27 +2183,30 @@
TInt error(KErrNone);
PROFILE_DEBUG3("CSIPProfileServerCore::ApnChanged, Profile Id", profile->Id())
CSIPProfileCacheItem* item = ProfileCacheItem(profile->Id());
- TBool isVpnInUse = (FeatureManager::FeatureSupported( KFeatureIdFfImsDeregistrationInVpn )
- && item->IsVpnInUse());
- if ( err == KErrNone && CheckIapSettings(profile->Id()))
+ if(item)
{
- if(switchEnabledProfile.operation == TStoreSwitchEnabledProfile::Update)
- {
- TRAP(error, item->UpdateRegistrationL(*(switchEnabledProfile.iObserver)));
- }
- else if(switchEnabledProfile.operation == TStoreSwitchEnabledProfile::Enable && !item->IsRfsInprogress() && !isVpnInUse)
- {
- TRAP(error, iAlrHandler->EnableProfileL(*item, *(switchEnabledProfile.iObserver)));
- }
- else if(switchEnabledProfile.operation == TStoreSwitchEnabledProfile::Register)
- {
- TRAP(error, item->StartRegisterL(*iWaitForIAP, *iRegInProg, ETrue));
- }
- }
- if ( err != KErrNone || error)
- {
- PROFILE_DEBUG1("CSIPProfileServerCore::ApnChanged, error handling")
- HandleAsyncError(*item, profile->Status(), err);
+ TBool isVpnInUse = (FeatureManager::FeatureSupported( KFeatureIdFfImsDeregistrationInVpn )
+ && item->IsVpnInUse());
+ if ( err == KErrNone && CheckIapSettings(profile->Id()))
+ {
+ if(switchEnabledProfile.operation == TStoreSwitchEnabledProfile::Update)
+ {
+ TRAP(error, item->UpdateRegistrationL(*(switchEnabledProfile.iObserver)));
+ }
+ else if(switchEnabledProfile.operation == TStoreSwitchEnabledProfile::Enable && !item->IsRfsInprogress() && !isVpnInUse)
+ {
+ TRAP(error, iAlrHandler->EnableProfileL(*item, *(switchEnabledProfile.iObserver)));
+ }
+ else if(switchEnabledProfile.operation == TStoreSwitchEnabledProfile::Register)
+ {
+ TRAP(error, item->StartRegisterL(*iWaitForIAP, *iRegInProg, ETrue));
+ }
+ }
+ if ( err != KErrNone || error)
+ {
+ PROFILE_DEBUG1("CSIPProfileServerCore::ApnChanged, error handling")
+ HandleAsyncError(*item, profile->Status(), err);
+ }
}
}
}
--- a/realtimenetprots/sipfw/ProfileAgent/profile_fsm/src/Sipprflregisteredstate.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/ProfileAgent/profile_fsm/src/Sipprflregisteredstate.cpp Mon May 03 12:50:54 2010 +0300
@@ -14,7 +14,7 @@
// Name : sipprflregisteredstate.cpp
// Part of : sip profile fsm
// implementation
-// Version : %version: 2.1.1 %
+// Version : %version: 2.1.2 %
//
@@ -289,7 +289,7 @@
{
aContext.SetProfile(&aNewProfile);
}
- else if((&aNewProfile)->IsDefault() != (oldProfile)->IsDefault())
+ else if((&aNewProfile)->IsDefault() && !(oldProfile)->IsDefault())
{
aContext.SetProfile(&aNewProfile);
}
--- a/realtimenetprots/sipfw/SIP/Group/digestplugin.mmp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/SIP/Group/digestplugin.mmp Mon May 03 12:50:54 2010 +0300
@@ -83,7 +83,6 @@
LIBRARY commsdat.lib
LIBRARY flogger.lib
LIBRARY charconv.lib
-LIBRARY imut.lib
LIBRARY centralrepository.lib
LIBRARY efsrv.lib
--- a/realtimenetprots/sipfw/SIP/SIPSec/DigestPlugin/src/CSIPSecChallengeAKA.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/SIP/SIPSec/DigestPlugin/src/CSIPSecChallengeAKA.cpp Mon May 03 12:50:54 2010 +0300
@@ -26,7 +26,7 @@
#include "sipsecdigestcontext.h"
#include "sipstrings.h"
#include "sipstrconsts.h"
-#include <imcvcodc.h>
+#include <tconvbase64.h>
// ============================ MEMBER FUNCTIONS ===============================
@@ -132,8 +132,8 @@
HBufC8* auts = HBufC8::NewLC( KBase64EncodedAutsLength );
TPtr8 autsPtr( auts->Des() );
- TImCodecB64 encoder;
- User::LeaveIfError( encoder.Encode( userData.AUTS(), autsPtr ) );
+ TBase64 encoder;
+ User::LeaveIfError( encoder.Encode( userData.AUTS(), autsPtr ) );
aContext.SetParamValueL( SipStrConsts::EAuts, *auts );
CleanupStack::PopAndDestroy( auts );
--- a/realtimenetprots/sipfw/SIP/sipapi/api/sipmessageelements.h Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/SIP/sipapi/api/sipmessageelements.h Mon May 03 12:50:54 2010 +0300
@@ -166,7 +166,7 @@
TBool iHeaderLookupOpen;
private: // For testing purposes
-#ifdef CPPUNIt_TEST
+#ifdef CPPUNIT_TEST
friend class CSIPMessageElementsTest;
#endif
};
Binary file realtimenetprots/sipfw/conf/sipframework.confml has changed
Binary file realtimenetprots/sipfw/conf/sipframework_2001f889.crml has changed
--- a/realtimenetprots/sipfw/rom/sipsw.iby Fri Apr 16 15:18:54 2010 +0300
+++ b/realtimenetprots/sipfw/rom/sipsw.iby Mon May 03 12:50:54 2010 +0300
@@ -107,8 +107,9 @@
/* Resources - XML for secure profile backup*/
data=ZPRIVATE\101F413C\backup_registration.xml private\101F413C\backup_registration.xml
-data=DATAZ_\private\10202be9\2001F889.txt private\10202be9\2001F889.txt
+// ProfileAgent's default cre file
+data=DATAZ_\private\10202be9\101f413c.cre private\10202be9\101f413c.cre
#endif /* SYMBIAN_EXCLUDE_SIP*/
--- a/rtp/rtpstack/src/rtpsession.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/rtp/rtpstack/src/rtpsession.cpp Mon May 03 12:50:54 2010 +0300
@@ -3036,6 +3036,7 @@
switch ( aError )
{
case KErrDisconnected:
+ case KErrConnectionTerminated:
RTP_DEBUG_DETAIL( "Socket Disconnected" );
--- a/sipplugins/sippdevmgmtsipadapter/tsrc/UT_CNSmlDmSIPAdapter/Group/ut_cnsmldmsipadapter.mmp Fri Apr 16 15:18:54 2010 +0300
+++ b/sipplugins/sippdevmgmtsipadapter/tsrc/UT_CNSmlDmSIPAdapter/Group/ut_cnsmldmsipadapter.mmp Mon May 03 12:50:54 2010 +0300
@@ -62,7 +62,5 @@
LIBRARY nsmldmiapmatcher.lib
LIBRARY sysutil.lib
LIBRARY efsrv.lib
-LIBRARY apengine.lib
-LIBRARY commdb.lib
// End of file
--- a/sipplugins/sippdevmgmtsipadapter/tsrc/UT_CNSmlDmSIPAdapter/inc/SmlDmCallback_stub.h Fri Apr 16 15:18:54 2010 +0300
+++ b/sipplugins/sippdevmgmtsipadapter/tsrc/UT_CNSmlDmSIPAdapter/inc/SmlDmCallback_stub.h Mon May 03 12:50:54 2010 +0300
@@ -75,6 +75,9 @@
MSmlDmAdapter::TError& aStatus);
HBufC8* GetLuidAllocL(const TDesC8& aURI);
+
+ TInt RemoveMappingL(TUint32 aAdapterId, const TDesC8& aURI, TBool aChildAlso);
+
private:
--- a/sipplugins/sippdevmgmtsipadapter/tsrc/UT_CNSmlDmSIPAdapter/src/SmlDmCallback_stub.cpp Fri Apr 16 15:18:54 2010 +0300
+++ b/sipplugins/sippdevmgmtsipadapter/tsrc/UT_CNSmlDmSIPAdapter/src/SmlDmCallback_stub.cpp Mon May 03 12:50:54 2010 +0300
@@ -138,6 +138,13 @@
}
return iLUID2;
}
+
+TInt CSmlDmCallback_stub::RemoveMappingL( TUint32 /*aAdapterId*/,
+ const TDesC8& /*aURI*/,
+ TBool /*aChildAlso*/ )
+ {
+ return KErrNone;
+ }
void CSmlDmCallback_stub::ConstructL()
{
--- a/sipplugins/sippsystemstatemonitor/rom/sipsystemstatemonitor.iby Fri Apr 16 15:18:54 2010 +0300
+++ b/sipplugins/sippsystemstatemonitor/rom/sipsystemstatemonitor.iby Mon May 03 12:50:54 2010 +0300
@@ -22,6 +22,8 @@
#include <bldvariant.hrh>
ECOM_PLUGIN(sipsystemstatemonitor.dll,sipsystemstatemonitor.rsc)
-/* patchdata ssmcmn.dll@KSsmGracefulOffline 0xFFFFFFFF */
+#ifdef FF_IMS_DEREGISTRATION_IN_OFFLINE
+patchdata ssmcmn.dll@KSsmGracefulOffline 0xFFFFFFFF
+#endif
#endif /* SIPSYSTEMSTATEMONTOR_IBY */