diff -r d2517372cc44 -r ae69c2e8bc34 syncmlfw/ds/hostserver/dshostclient/src/nsmldshostclientsession.cpp --- a/syncmlfw/ds/hostserver/dshostclient/src/nsmldshostclientsession.cpp Tue Sep 28 17:53:08 2010 +0530 +++ b/syncmlfw/ds/hostserver/dshostclient/src/nsmldshostclientsession.cpp Fri Oct 15 11:46:45 2010 +0530 @@ -53,13 +53,28 @@ iMode = ENSmlNormalMode; TInt result( CreateSession( aServerName, aVersion ) ); - if ( result == KErrNotFound || result == KErrServerTerminated ) + if ( result != KErrNone ) { result = LaunchServer( aServerName ); - if ( result == KErrNone || result == KErrAlreadyExists ) + if ( result == KErrNone ) { result = CreateSession( aServerName, aVersion ); } + else if ( result == KErrAlreadyExists ) + { + TInt retryCount = 3; + + while ( result != KErrNone && retryCount ) + { + result = CreateSession( aServerName, aVersion ); + if( result != KErrNone ) + { + // wait 1.5 seconds to give the server a chance to reach its serviceable state + User::After( 1500000 ); + --retryCount; + } + } + } } return result; }