From: Guus Sliepen Date: Sun, 1 Nov 2009 14:57:28 +0000 (+0100) Subject: Start a tinc service if it already exists. X-Git-Tag: import-tinc-1.1~584^2~1 X-Git-Url: https://git.meshlink.io/?a=commitdiff_plain;h=d331f04e4598824afc7de33ac1228cf441ae9872;p=meshlink Start a tinc service if it already exists. --- diff --git a/src/process.c b/src/process.c index 01ebe494..6d0e499a 100644 --- a/src/process.c +++ b/src/process.c @@ -103,13 +103,18 @@ bool install_service(void) { command, NULL, NULL, NULL, NULL, NULL); if(!service) { - logger(LOG_ERR, "Could not create %s service: %s", identname, winerror(GetLastError())); - return false; + DWORD lasterror = GetLastError(); + logger(LOG_ERR, "Could not create %s service: %s", identname, winerror(lasterror)); + if(lasterror != ERROR_SERVICE_EXISTS) + return false; } - ChangeServiceConfig2(service, SERVICE_CONFIG_DESCRIPTION, &description); - - logger(LOG_INFO, "%s service installed", identname); + if(service) { + ChangeServiceConfig2(service, SERVICE_CONFIG_DESCRIPTION, &description); + logger(LOG_INFO, "%s service installed", identname); + } else { + service = OpenService(manager, identname, SERVICE_ALL_ACCESS); + } if(!StartService(service, 0, NULL)) logger(LOG_WARNING, "Could not start %s service: %s", identname, winerror(GetLastError()));