diff -r f54bfd820e04 -r b5e99d8877c7 realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp --- a/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp Thu Aug 19 10:16:25 2010 +0300 +++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp Tue Aug 31 15:32:57 2010 +0300 @@ -396,7 +396,14 @@ { return EFalse; } - + + if((aError != KErrNone) && item->HasQueuedUpdate()) + { + PROFILE_DEBUG4("ProfileServerCore::ProceedRegistration HasQueuedUpdate, err", + item->HasQueuedUpdate(), aError) + return EFalse; + } + if ( ShouldChangeIap(item->UsedProfile(), aError) && !item->SnapRetryCountReached() ) { @@ -1546,6 +1553,7 @@ if (index != KErrNotFound) { iObservers.Remove(index); + iObservers.Compress(); } for (TInt i = 0; i < iProfileCache.Count(); i ++) @@ -1926,6 +1934,7 @@ if (index >= 0) { iProfileCache.Remove(index); + iProfileCache.Compress(); } } @@ -1942,7 +1951,9 @@ { CSipAlrMigrationController* unused = iMigrationControllers[i]; iMigrationControllers.Remove(i); + iMigrationControllers.Compress(); delete unused; + unused = NULL; } } }