diff -r 3cebc1a84278 -r 50de4d668bb6 watchdog/src/watchdog.cpp --- 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 );