dcmofw/dcmoclient/src/dcmoclient.cpp
changeset 73 ae69c2e8bc34
parent 55 1c556dee8eb1
--- a/dcmofw/dcmoclient/src/dcmoclient.cpp	Tue Sep 28 17:53:08 2010 +0530
+++ b/dcmofw/dcmoclient/src/dcmoclient.cpp	Fri Oct 15 11:46:45 2010 +0530
@@ -99,15 +99,21 @@
 	{	
 	RDEBUG("RDCMOClient::OpenL()- Begin");
 	TInt res = KErrNone;	
-	res = CreateSession( KDCMOServerName,TVersion(KDCMOServerMajorVersionNumber, KDCMOServerMinorVersionNumber, KDCMOServerBuildVersionNumber), KDCMOServerMessageSlotNumber );
-	if ( res == KErrNotFound || res == KErrServerTerminated )
-		{
-		RDEBUG("RDCMOClient::OpenL()- session not created");
-		res = StartServerL();
-		User::LeaveIfError( res );
-		res = CreateSession( KDCMOServerName,TVersion(KDCMOServerMajorVersionNumber, KDCMOServerMinorVersionNumber, KDCMOServerBuildVersionNumber), KDCMOServerMessageSlotNumber );
-		}
-	User::LeaveIfError( res );
+	const int maxRetry(4);
+	TInt retry = maxRetry;
+	do {
+        res = CreateSession( KDCMOServerName,TVersion(KDCMOServerMajorVersionNumber, KDCMOServerMinorVersionNumber, KDCMOServerBuildVersionNumber), KDCMOServerMessageSlotNumber );
+        if (KErrNotFound != res && KErrServerTerminated != res) {
+            retry =0;
+        } else {
+            TRAP(res, StartServerL());
+            if (KErrNone == res || KErrAlreadyExists == res) {
+                retry =0;
+                res = CreateSession( KDCMOServerName,TVersion(KDCMOServerMajorVersionNumber, KDCMOServerMinorVersionNumber, KDCMOServerBuildVersionNumber), KDCMOServerMessageSlotNumber );
+            }
+        }
+    } while (--retry > 0);
+	User::LeaveIfError( res );	
 	RDEBUG_2("RDCMOClient::OpenL()- End with Errorcode as %d",res);	
 	return res;
 	}