--- 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;
}