X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/1136f709ef8add5fa9ba8663db910003362e1bd2..30874d6682a37bc1d8f3d76fd90afde6a0f3fce7:/src/main-common.c diff --git a/src/main-common.c b/src/main-common.c index c480062..1cd96db 100644 --- a/src/main-common.c +++ b/src/main-common.c @@ -381,20 +381,24 @@ received_ping(void) } static exit_func_t *ef_list; +static void **ef_list_extra; static unsigned int ef_size = 0, ef_used = 0; -void reg_exit_func(exit_func_t handler) +void reg_exit_func(exit_func_t handler, void *extra) { if (ef_used == ef_size) { if (ef_size) { ef_size <<= 1; ef_list = realloc(ef_list, ef_size*sizeof(exit_func_t)); + ef_list_extra = realloc(ef_list_extra, ef_size*sizeof(void*)); } else { ef_size = 8; ef_list = malloc(ef_size*sizeof(exit_func_t)); + ef_list_extra = malloc(ef_size*sizeof(void*)); } } - ef_list[ef_used++] = handler; + ef_list[ef_used] = handler; + ef_list_extra[ef_used++] = extra; } void call_exit_funcs(void) @@ -408,9 +412,11 @@ void call_exit_funcs(void) */ while (n > 0) { - ef_list[--n](); + --n; + ef_list[n](ef_list_extra[n]); } free(ef_list); + free(ef_list_extra); ef_used = ef_size = 0; } @@ -431,6 +437,11 @@ conf_globals(void) const char *info; dict_t dict; + info = conf_get_data("services/opserv/nick", RECDB_QSTRING); + if (info && (info[0] == '.')) + info = NULL; + init_opserv(info); + info = conf_get_data("services/global/nick", RECDB_QSTRING); if (info && (info[0] == '.')) info = NULL; @@ -468,10 +479,10 @@ conf_globals(void) policer_params_set(luser_policer_params, "drain-rate", "0.50"); } - info = conf_get_data("services/opserv/nick", RECDB_QSTRING); + info = conf_get_data("services/spamserv/nick", RECDB_QSTRING); if (info && (info[0] == '.')) info = NULL; - init_opserv(info); + init_spamserv(info); } #ifdef HAVE_SYS_RESOURCE_H @@ -579,7 +590,7 @@ license() "Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n\n"); } -void main_shutdown(void) +void main_shutdown(UNUSED_ARG(void *extra)) { struct uplinkNode *ul, *ul_next; ioset_cleanup();