X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2Fmain.c;h=d17647d72f227ee3c5a4d742ca2e739d0e1b06f1;hp=d26219077b1fd3442ab6035c4820ef1b78c74e8c;hb=19160d1e7f3bf41a6f7edbc5ec539d4588e1c69a;hpb=8ce78bf760720d04385821abba8f888b5de03140 diff --git a/src/main.c b/src/main.c index d262190..d17647d 100644 --- a/src/main.c +++ b/src/main.c @@ -47,22 +47,7 @@ #include "IOHandler.h" #include "statistics.h" -static struct { - time_t start_time; - int running : 1; - int restart : 1; - int run_as_daemon : 1; - int daemonized : 1; - int loglevel : 8; - int loaded_config : 1; - int running_threads : 8; - - int argc; - char **argv; - - char config[MAXLEN]; - char pidfile[MAXLEN]; -} process_state; +struct ProcessState process_state; static FILE *log_fptr = NULL; @@ -199,7 +184,22 @@ void initialize_subsystems() { void shutdown_subsystems() { free_sockets(1); - usleep(10000); //wait for disconnect (10ms) + //wait 50ms (run iohandler) + { + struct timeval timeout, ctime1, ctime2; + gettimeofday(&ctime1, NULL); + ctime1.tv_usec += 50000; + if(ctime1.tv_usec > 1000000) { + ctime1.tv_usec -= 1000000; + ctime1.tv_sec++; + } + do { + timeout.tv_sec = 0; + timeout.tv_usec = 10000; + iohandler_poll_timeout(timeout); + gettimeofday(&ctime2, NULL); + } while(timeval_is_bigger(ctime1, ctime2)); + } stop_modules(); free_sockets(0); qserver_free();