Releasing 1.1pre5.
[tinc] / src / process.c
index bec78ba..0f399e7 100644 (file)
@@ -1,7 +1,7 @@
 /*
     process.c -- process management functions
     Copyright (C) 1999-2005 Ivo Timmermans,
-                  2000-2011 Guus Sliepen <guus@tinc-vpn.org>
+                  2000-2013 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -25,7 +25,9 @@
 #include "control.h"
 #include "device.h"
 #include "edge.h"
+#include "event.h"
 #include "logger.h"
+#include "names.h"
 #include "net.h"
 #include "node.h"
 #include "process.h"
 bool do_detach = true;
 bool sigalrm = false;
 
-extern char *identname;
 extern char **g_argv;
 extern bool use_logfile;
 
 /* Some functions the less gifted operating systems might lack... */
 
 #ifdef HAVE_MINGW
-extern char *identname;
-extern char *program_name;
-extern char **g_argv;
-
 static SC_HANDLE manager = NULL;
 static SC_HANDLE service = NULL;
 static SERVICE_STATUS status = {0};
@@ -123,11 +120,11 @@ DWORD WINAPI controlhandler(DWORD request, DWORD type, LPVOID boe, LPVOID bah) {
                        logger(DEBUG_ALWAYS, LOG_NOTICE, "Got %s request", "SERVICE_CONTROL_SHUTDOWN");
                        break;
                default:
-                       logger(DEBUG_ALWAYS, LOG_WARNING, "Got unexpected request %d", request);
+                       logger(DEBUG_ALWAYS, LOG_WARNING, "Got unexpected request %d", (int)request);
                        return ERROR_CALL_NOT_IMPLEMENTED;
        }
 
-       event_loopexit(NULL);
+       event_exit();
        status.dwWaitHint = 30000;
        status.dwCurrentState = SERVICE_STOP_PENDING;
        SetServiceStatus(statushandle, &status);
@@ -135,10 +132,8 @@ DWORD WINAPI controlhandler(DWORD request, DWORD type, LPVOID boe, LPVOID bah) {
 }
 
 VOID WINAPI run_service(DWORD argc, LPTSTR* argv) {
-       int err = 1;
        extern int main2(int argc, char **argv);
 
-
        status.dwServiceType = SERVICE_WIN32;
        status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
        status.dwWin32ExitCode = 0;
@@ -149,7 +144,6 @@ VOID WINAPI run_service(DWORD argc, LPTSTR* argv) {
 
        if (!statushandle) {
                logger(DEBUG_ALWAYS, LOG_ERR, "System call `%s' failed: %s", "RegisterServiceCtrlHandlerEx", winerror(GetLastError()));
-               err = 1;
        } else {
                status.dwWaitHint = 30000;
                status.dwCurrentState = SERVICE_START_PENDING;
@@ -159,11 +153,10 @@ VOID WINAPI run_service(DWORD argc, LPTSTR* argv) {
                status.dwCurrentState = SERVICE_RUNNING;
                SetServiceStatus(statushandle, &status);
 
-               err = main2(argc, argv);
+               main2(argc, argv);
 
                status.dwWaitHint = 0;
                status.dwCurrentState = SERVICE_STOPPED;
-               //status.dwWin32ExitCode = err;
                SetServiceStatus(statushandle, &status);
        }