syncmlfw/common/sosserver_privateapi/src/NSmlPrivateAPI.cpp
changeset 73 ae69c2e8bc34
parent 0 b497e44ab2fc
--- 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");