X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprocess.c;h=dcc6cb334a5b764fadb4fc17e97cb45a74c51fe7;hb=f02d3ed3e135b5326003e7f69f8331ff6a3cc219;hp=b8c542044f1633b95d14238655c62afcde39aac6;hpb=6d19ebd612e6387ba34419cce5cd4d5d861b9a9e;p=tinc diff --git a/src/process.c b/src/process.c index b8c54204..dcc6cb33 100644 --- a/src/process.c +++ b/src/process.c @@ -42,14 +42,12 @@ extern char *identname; extern char *pidfilename; extern char **g_argv; extern bool use_logfile; -extern volatile bool running; sigset_t emptysigset; static int saved_debug_level = -1; -static void memory_full(int size) -{ +static void memory_full(int size) { logger(LOG_ERR, _("Memory exhausted (couldn't allocate %d bytes), exitting."), size); cp_trace(); exit(1); @@ -164,23 +162,14 @@ DWORD WINAPI controlhandler(DWORD request, DWORD type, LPVOID boe, LPVOID bah) { return ERROR_CALL_NOT_IMPLEMENTED; } - if(running) { - running = false; - status.dwWaitHint = 30000; - status.dwCurrentState = SERVICE_STOP_PENDING; - SetServiceStatus(statushandle, &status); - return NO_ERROR; - } else { - status.dwWaitHint = 0; - status.dwCurrentState = SERVICE_STOPPED; - SetServiceStatus(statushandle, &status); - exit(1); - } - + event_loopexit(NULL); + status.dwWaitHint = 30000; + status.dwCurrentState = SERVICE_STOP_PENDING; + SetServiceStatus(statushandle, &status); + return NO_ERROR; } -VOID WINAPI run_service(DWORD argc, LPTSTR* argv) -{ +VOID WINAPI run_service(DWORD argc, LPTSTR* argv) { int err = 1; extern int main2(int argc, char **argv); @@ -238,8 +227,7 @@ bool init_service(void) { /* check for an existing tinc for this net, and write pid to pidfile */ -static bool write_pidfile(void) -{ +static bool write_pidfile(void) { pid_t pid; cp(); @@ -268,8 +256,7 @@ static bool write_pidfile(void) /* kill older tincd for this net */ -bool kill_other(int signal) -{ +bool kill_other(int signal) { #ifndef HAVE_MINGW pid_t pid; @@ -309,8 +296,7 @@ bool kill_other(int signal) /* Detach from current terminal, write pidfile, kill parent */ -bool detach(void) -{ +bool detach(void) { cp(); setup_signals(); @@ -356,8 +342,7 @@ bool detach(void) return true; } -bool execute_script(const char *name, char **envp) -{ +bool execute_script(const char *name, char **envp) { #ifdef HAVE_SYSTEM int status, len; struct stat s; @@ -440,16 +425,14 @@ bool execute_script(const char *name, char **envp) */ #ifndef HAVE_MINGW -static RETSIGTYPE fatal_signal_square(int a) -{ +static RETSIGTYPE fatal_signal_square(int a) { logger(LOG_ERR, _("Got another fatal signal %d (%s): not restarting."), a, strsignal(a)); cp_trace(); exit(1); } -static RETSIGTYPE fatal_signal_handler(int a) -{ +static RETSIGTYPE fatal_signal_handler(int a) { struct sigaction act; logger(LOG_ERR, _("Got fatal signal %d (%s)"), a, strsignal(a)); cp_trace(); @@ -472,14 +455,12 @@ static RETSIGTYPE fatal_signal_handler(int a) } } -static RETSIGTYPE unexpected_signal_handler(int a) -{ +static RETSIGTYPE unexpected_signal_handler(int a) { logger(LOG_WARNING, _("Got unexpected signal %d (%s)"), a, strsignal(a)); cp_trace(); } -static RETSIGTYPE ignore_signal_handler(int a) -{ +static RETSIGTYPE ignore_signal_handler(int a) { ifdebug(SCARY_THINGS) logger(LOG_DEBUG, _("Ignored signal %d (%s)"), a, strsignal(a)); } @@ -496,8 +477,7 @@ static struct { }; #endif -void setup_signals(void) -{ +void setup_signals(void) { #ifndef HAVE_MINGW int i; struct sigaction act;