wait for bots to be disconnected on shutdown
[NeonServV5.git] / src / main.c
index d26219077b1fd3442ab6035c4820ef1b78c74e8c..d17647d72f227ee3c5a4d742ca2e739d0e1b06f1 100644 (file)
 #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();