syncmlfw/ds/hostserver/dshostclient/src/nsmldshostclientsession.cpp
changeset 73 ae69c2e8bc34
parent 0 b497e44ab2fc
--- 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;
 	}