X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fmain.c;h=e8d366aa0d7141696c51b302cc900f2b961fa3c2;hb=82f0cd1f3c2c0160944b0c627581f1994583e2b2;hp=4ad2d0d5c0f13626048ecb4833c6f51266be678e;hpb=f90d21daf31f8d69e24406678be696afa8cae962;p=NeonServV5.git diff --git a/src/main.c b/src/main.c index 4ad2d0d..e8d366a 100644 --- a/src/main.c +++ b/src/main.c @@ -36,6 +36,7 @@ #include "commands.h" #include "ConfigParser.h" #include "ssl.h" +#include "QServer.h" time_t start_time; static int running, hard_restart; @@ -44,10 +45,13 @@ int statistics_enabled; TIMEQ_CALLBACK(main_statistics); #ifdef HAVE_THREADS int running_threads; +pthread_mutex_t cache_sync; +pthread_mutex_t whohandler_sync, whohandler_mass_sync; #endif void cleanup() { free_sockets(); + qserver_free(); free_parser(); free_UserNode(); free_ChanNode(); @@ -103,11 +107,8 @@ void * thread_main(void *arg) { do { socket_loop(SOCKET_SELECT_TIME); } while(time(0) < socket_wait); - timeq_tick(); - loop_bots(); clearTempUsers(); destroyEvents(); - queue_loop(); } running_threads--; return NULL; @@ -135,6 +136,12 @@ main: statistics_enabled = get_int_field("statistics.enable"); + #ifdef HAVE_THREADS + THREAD_MUTEX_INIT(cache_sync); + THREAD_MUTEX_INIT(whohandler_sync); + THREAD_MUTEX_INIT(whohandler_mass_sync); + #endif + queue_init(); init_sockets(); init_timeq(); @@ -151,6 +158,7 @@ main: register_commands(); init_bots(); init_DBHelper(); + qserver_init(); load_languages(); int update_minutes = get_int_field("statistics.frequency"); @@ -168,6 +176,14 @@ main: running_threads++; pthread_create(&tid[tid_id], NULL, thread_main, NULL); } + int usleep_delay = 1000000 / TICKS_PER_SECOND; + while(running) { + timeq_tick(); + loop_bots(); + qserver_loop(); + queue_loop(); + usleep(usleep_delay); + } for(tid_id = 0; tid_id < worker_threads; tid_id++) { pthread_join(tid[tid_id], NULL); } @@ -183,6 +199,7 @@ main: loop_bots(); clearTempUsers(); destroyEvents(); + qserver_loop(); queue_loop(); } #endif