]> jfr.im git - irc/quakenet/newserv.git/commitdiff
No longer allow db reloading on the fly.
authorChris Porter <redacted>
Wed, 1 Oct 2008 23:06:34 +0000 (00:06 +0100)
committerChris Porter <redacted>
Wed, 1 Oct 2008 23:06:34 +0000 (00:06 +0100)
trusts/data.c
trusts/db.c
trusts/events.c
trusts/trusts.c
trusts/trusts_commands.c

index 27407f567ef85944a7159060205106ad2f3cda1d..934c08e5398096672ed61715792a80d9767dc07a 100644 (file)
@@ -114,4 +114,3 @@ trusthost *th_getbyhost(uint32_t host) {
 
   return NULL;
 }
-
index 2dc73c0953b982de0044971fc158854a7e34ed3c..6d5306c3aaa44c80d2b7b0b8e3d587dd47b75060 100644 (file)
@@ -11,19 +11,6 @@ int trustsdbloaded;
 void trusts_reloaddb(void);
 void createtrusttables(int migration);
 
-int trusts_loaddb(void) {
-  trustsdb = dbapi2open(NULL, "trusts");
-  if(!trustsdb) {
-    Error("trusts", ERR_WARNING, "Unable to connect to db -- not loaded.");
-    return 0;
-  }
-
-  createtrusttables(0);
-
-  trusts_reloaddb();
-  return 1;
-}
-
 void createtrusttables(int migration) {
   char *groups, *hosts;
 
@@ -42,11 +29,13 @@ void createtrusttables(int migration) {
   trustsdb->createtable(trustsdb, NULL, NULL, "CREATE TABLE ? (groupid INT, host VARCHAR(?), max INT, lastseen INT, PRIMARY KEY (groupid, host))", "Td", hosts, TRUSTHOSTLEN);
 }
 
-static void trusts_freedb(void) {
-  trusts_freeall();
+static void loadcomplete(void ) {
+  /* error has already been shown */
+  if(loaderror)
+    return;
 
-  trustsdbloaded = 0;
-  tgmaxid = 0;
+  trustsdbloaded = 1;
+  triggerhook(HOOK_TRUSTS_DB_LOADED, NULL);
 }
 
 static void loadhosts_data(const DBAPIResult *result, void *tag) {
@@ -95,10 +84,7 @@ static void loadhosts_data(const DBAPIResult *result, void *tag) {
 
   result->clear(result);
 
-  if(!loaderror) {
-    trustsdbloaded = 1;
-    triggerhook(HOOK_TRUSTS_DB_LOADED, NULL);
-  }
+  loadcomplete();
 }
 
 static void loadhosts_fini(const DBAPIResult *result, void *tag) {
@@ -169,19 +155,31 @@ static void loadgroups_fini(const DBAPIResult *result, void *tag) {
   Error("trusts", ERR_INFO, "Finished loading groups, maximum id: %d.", tgmaxid);
 }
 
-void trusts_reloaddb(void) {
-  trusts_freedb();
+int trusts_loaddb(void) {
+  trustsdb = dbapi2open(NULL, "trusts");
+  if(!trustsdb) {
+    Error("trusts", ERR_WARNING, "Unable to connect to db -- not loaded.");
+    return 0;
+  }
+
+  createtrusttables(0);
 
   loaderror = 0;
 
   trustsdb->loadtable(trustsdb, NULL, loadgroups_data, loadgroups_fini, NULL, "groups");
   trustsdb->loadtable(trustsdb, NULL, loadhosts_data, loadhosts_fini, NULL, "hosts");
+
+  return 1;
 }
 
 void trusts_closedb(void) {
   if(!trustsdb)
     return;
 
+  trusts_freeall();
+  trustsdbloaded = 0;
+  tgmaxid = 0;
+
   trustsdb->close(trustsdb);
   trustsdb = NULL;
 }
index faa20c48831d7801151e91a6d5ffb120405b0fd4..481390acea5425d333f5a79e42db1468ec88d821 100644 (file)
@@ -1,8 +1,6 @@
 #include "../core/hooks.h"
 #include "trusts.h"
 
-static int eventsregistered;
-
 static void __newnick(int hooknum, void *arg) {
   nick *sender = arg;
   uint32_t host;
@@ -67,8 +65,6 @@ static void __dbloaded(int hooknum, void *arg) {
   int i;
   nick *np;
 
-  eventsregistered = 1;
-
   registerhook(HOOK_NICK_NEWNICK, __newnick);
   registerhook(HOOK_NICK_LOSTNICK, __lostnick);
 
@@ -89,7 +85,7 @@ void trusts_registerevents(void) {
 }
 
 void trusts_deregisterevents(void) {
-  if(eventsregistered) {
+  if(trustsdbloaded) {
     deregisterhook(HOOK_NICK_NEWNICK, __newnick);
     deregisterhook(HOOK_NICK_LOSTNICK, __lostnick);
 
index 3db8390c27a746b97a16d1e0caca03b31ac42fbf..ac1a137ca0a1cee0afa232c12c5fc50042e7cf28 100644 (file)
@@ -53,17 +53,18 @@ void _fini(void) {
 static void statusfn(int hooknum, void *arg) {
   if((long)arg > 10) {
     char message[100];
-    int groupcount = 0, hostcount = 0;
+    int groupcount = 0, hostcount = 0, usercount = 0;
     trustgroup *tg;
     trusthost *th;
 
     for(tg=tglist;tg;tg=tg->next) {
+      usercount+=tg->count;
       groupcount++;
       for(th=tg->hosts;th;th=th->next)
         hostcount++;
     }
 
-    snprintf(message, sizeof(message), "Trusts  : %d trust groups, %d hosts", groupcount, hostcount);
+    snprintf(message, sizeof(message), "Trusts  :%7d groups, %7d hosts, %7d users", groupcount, hostcount, usercount);
     triggerhook(HOOK_CORE_STATSREPLY, message);
   }  
 }
index 33e8bb5a4e3e2aef289a879792c77372d7bf0f8b..25b3e031364dd365171d5bd0fa33d5f75afdfd15 100644 (file)
@@ -7,8 +7,6 @@ void trusts_migration_stop(void);
 static void registercommands(void);
 static void deregistercommands(void);
 
-static int commandsregistered;
-
 static void migrate_status(int errcode, void *tag) {
   long sender = (long)tag;
   nick *np = getnickbynumeric(sender);
@@ -17,10 +15,9 @@ static void migrate_status(int errcode, void *tag) {
     return;
 
   if(!errcode) {
-    controlreply(np, "Migration complete.");
-    trusts_reloaddb();
+    controlreply(np, "Migration complete, you must reload the module.");
   } else {
-    controlreply(np, "Error %d occured during migration.", errcode);
+    controlreply(np, "Error %d occured during migration, commands reregistered.", errcode);
     registercommands();
   }
 }
@@ -32,7 +29,7 @@ static int trusts_cmdmigrate(void *source, int cargc, char **cargv) {
   /* iffy but temporary */
   ret = trusts_migration_start(migrate_status, (void *)(sender->numeric));
   if(!ret) {
-    controlreply(sender, "Migration started.");
+    controlreply(sender, "Migration started, commands deregistered.");
     deregistercommands();
   } else {
     controlreply(sender, "Error %d starting migration.", ret);
@@ -131,20 +128,14 @@ void _fini(void) {
 }
 
 static void registercommands(void) {
-  if(!trustsdbloaded || commandsregistered)
-    return;
-
-  commandsregistered = 1;
-
   registercontrolhelpcmd("trustmigrate", NO_OPER, 0, trusts_cmdmigrate, "Usage: trustmigrate\nCopies trust data from O and reloads the database.");
   registercontrolhelpcmd("trustlist", NO_OPER, 1, trusts_cmdtrustlist, "Usage: trustlist <#id|name|id>\nShows trust data for the specified trust group.");
 }
 
 static void deregistercommands(void) {
-  if(!commandsregistered)
+  if(!trustsdbloaded)
     return;
 
   deregistercontrolcmd("trustmigrate", trusts_cmdmigrate);
   deregistercontrolcmd("trustlist", trusts_cmdtrustlist);
-  commandsregistered = 0;
 }