]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Make this logic a bit more bulletproof.
authorChris Porter <redacted>
Tue, 29 Nov 2005 17:09:00 +0000 (17:09 +0000)
committerChris Porter <redacted>
Tue, 29 Nov 2005 17:09:00 +0000 (17:09 +0000)
noperserv/noperserv.c
noperserv/noperserv_db.c
noperserv/noperserv_db.h

index cd8f17dd44b4814acaa4ed83e7b56b0ca5f246a0..7296bfeac8777ce4046d6df7bce8a816ecb8704c 100644 (file)
@@ -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 <nickname|#authname>\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);
index 22862e0de189b909c554d342d91b935d65c488ca..f6dc8d9a3adeb6ecc0548d5045d699cb86db8758 100644 (file)
@@ -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) {
index 49d6f3d781bd2e268f94b13fe5f77e12790ebb4f..16814b020d7d4b3a9451c9223b33fb0d719ab55e 100644 (file)
@@ -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;