watchdog/src/watchdog.cpp
branchRCL_3
changeset 8 50de4d668bb6
parent 7 3cebc1a84278
child 12 9f21bab39f42
--- a/watchdog/src/watchdog.cpp	Mon Mar 15 12:42:24 2010 +0200
+++ b/watchdog/src/watchdog.cpp	Wed Mar 31 22:19:07 2010 +0300
@@ -98,25 +98,36 @@
     // Double check that harvester server is not already running
     TFullName name;
     TInt res( KErrNone );
-        
-    // find Harvester Server
+   
+    // find really Harvester Server, using TFindServer to avoid logon a dead process
+    TFindServer findServer( KHarvesterServerProcess );
+    if ( findServer.Next(name) == KErrNone )
+        {
+        TFindProcess findProcess( KHarvesterServerProcess );
+        if ( findProcess.Next(name) == KErrNone )
+            {
+            PRINT(_L("CWatchdog::Start() - server already running, start listening"));
+            
+            iProcess.Close();
+            res = iProcess.Open(name);
+            if ( res != KErrNone )
+                {
+                PRINT(_L("CWatchdog::Start() - error in starting listening "));
+                return;
+                }
+            iState = EWaitingRendezvous;
+            SetActive();
+            return;
+            }
+        }  
+    
+    // close the panic process
     TFindProcess findProcess( KHarvesterServerProcess );
     if ( findProcess.Next(name) == KErrNone )
         {                
-        PRINT(_L("CWatchdog::Start() - server already running, start listening"));
-        
         iProcess.Close();
-        res = iProcess.Open(name);
-        if ( res != KErrNone )
-            {
-            PRINT(_L("CWatchdog::Start() - error in starting listening "));
-            return;
-            }
-        iState = EWaitingRendezvous;   
-        SetActive();
-        return;
-        }        
-    
+        }
+
     // Create the server process
     // KNullDesC param causes server's E32Main() to be run
     res = iProcess.Create( KHarvesterServerExe, KNullDesC );