diff -r d2517372cc44 -r ae69c2e8bc34 syncmlfw/common/sosserver_privateapi/src/NSmlPrivateAPI.cpp --- a/syncmlfw/common/sosserver_privateapi/src/NSmlPrivateAPI.cpp Tue Sep 28 17:53:08 2010 +0530 +++ b/syncmlfw/common/sosserver_privateapi/src/NSmlPrivateAPI.cpp Fri Oct 15 11:46:45 2010 +0530 @@ -94,10 +94,26 @@ if ( res != KErrNone ) { res = LaunchServer(); - User::LeaveIfError( res ); - res = CreateSession( KSOSServerName, version, KDefaultMessageSlots ); + if ( res == KErrNone ) + { + res = CreateSession( KSOSServerName, version, KDefaultMessageSlots ); } - + else if ( res == KErrAlreadyExists ) + { + TInt retryCount = 3; + + while ( res != KErrNone && retryCount ) + { + res = CreateSession( KSOSServerName, version, KDefaultMessageSlots ); + if( res != KErrNone ) + { + // wait 1.5 seconds to give the server a chance to reach its serviceable state + User::After( 1500000 ); + --retryCount; + } + } + } + } User::LeaveIfError( res ); _DBG_FILE("RNSmlPrivateAPI::OpenL(): end");