From: Chris Porter Date: Tue, 29 Nov 2005 17:09:00 +0000 (+0000) Subject: Make this logic a bit more bulletproof. X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/commitdiff_plain/7a32ca6ef3b10b354d04776b6dd1c69327c6ac68 Make this logic a bit more bulletproof. --- diff --git a/noperserv/noperserv.c b/noperserv/noperserv.c index cd8f17dd..7296bfea 100644 --- a/noperserv/noperserv.c +++ b/noperserv/noperserv.c @@ -69,10 +69,13 @@ int noperserv_deluser(void *sender, int cargc, char **cargv); void noperserv_oper_detection(int hooknum, void *arg); void noperserv_reply(nick *np, char *format, ...); +int init = 0; + void _init() { - noperserv_ext = registernickext("noperserv"); + if(!noperserv_load_db()) + return; - noperserv_load_db(); + noperserv_ext = registernickext("noperserv"); noperserv_setup_hooks(); @@ -100,6 +103,8 @@ void _init() { registercontrolhelpcmd("deluser", NO_OPERED | NO_ACCOUNT, 2, &noperserv_deluser, "Syntax: DELUSER \nDeletes the specified user."); registerhook(HOOK_NICK_MODEOPER, &noperserv_oper_detection); + + init = 1; } #ifdef BROKEN_DLCLOSE @@ -107,6 +112,9 @@ void __fini() { #else void _fini() { #endif + if(!init) + return; + deregisterhook(HOOK_NICK_MODEOPER, &noperserv_oper_detection); deregistercontrolcmd("noticeflags", &noperserv_noticeflags); diff --git a/noperserv/noperserv_db.c b/noperserv/noperserv_db.c index 22862e0d..f6dc8d9a 100644 --- a/noperserv/noperserv_db.c +++ b/noperserv/noperserv_db.c @@ -37,7 +37,10 @@ void noperserv_quit_account(int hooknum, void *arg); void nopserserv_delete_from_autheduser(nick *np, no_autheduser *au); -void noperserv_load_db(void) { +int noperserv_load_db(void) { + if(!pqconnected()) + return 0; + if(db_loaded) noperserv_cleanup_db(); @@ -49,6 +52,8 @@ void noperserv_load_db(void) { pqasyncquery(noperserv_load_users, NULL, "SELECT ID, authname, flags, noticelevel FROM noperserv.users"); + + return 1; } void noperserv_load_users(PGconn *dbconn, void *arg) { diff --git a/noperserv/noperserv_db.h b/noperserv/noperserv_db.h index 49d6f3d7..16814b02 100644 --- a/noperserv/noperserv_db.h +++ b/noperserv/noperserv_db.h @@ -18,7 +18,7 @@ typedef struct no_autheduser { no_nicklist *nick; } no_autheduser; -void noperserv_load_db(void); +int noperserv_load_db(void); void noperserv_cleanup_db(void); extern no_autheduser *authedusers;