ChanServ, OpServ and main.c bug fixes
authorEntrope <entrope@clan-dk.org>
Wed, 25 Feb 2004 04:06:30 +0000 (04:06 +0000)
committerEntrope <entrope@clan-dk.org>
Wed, 25 Feb 2004 04:06:30 +0000 (04:06 +0000)
* Read new-style channel flags from the correct field, and do not make
ChanServ rejoin channels that are still suspended

* Allow service nicknames to be omitted from srvx.conf (again)

* Construct "opserv" bot earlier so that database read works correctly
git-archimport-id: srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-6

src/chanserv.c
src/main.c
src/opserv.c

index 1a4c6d6f011082f70a1adbc939a153fcb047ec1e..19ece49ba99b118370cfbbf89aa23fc84721ef7d 100644 (file)
@@ -6466,7 +6466,7 @@ chanserv_channel_read(const char *key, struct record_data *hir)
                 continue;
             cData->chOpts[chOpt] = str[0];
         }
-        if((str = database_get_data(channel, KEY_FLAGS, RECDB_QSTRING)))
+        if((str = database_get_data(obj, KEY_FLAGS, RECDB_QSTRING)))
             cData->flags = atoi(str);
     }
     else if((str = database_get_data(channel, KEY_FLAGS, RECDB_QSTRING)))
@@ -6528,11 +6528,7 @@ chanserv_channel_read(const char *key, struct record_data *hir)
         cData->flags &= ~CHANNEL_SUSPENDED;
     }
 
-    if((cData->flags & CHANNEL_SUSPENDED) && (suspended->expires > now))
-    {
-        timeq_add(suspended->expires, chanserv_expire_suspension, suspended);
-    }
-    else
+    if(!(cData->flags & CHANNEL_SUSPENDED))
     {
         struct mod_chanmode change;
         change.modes_set = change.modes_clear = 0;
@@ -6541,6 +6537,10 @@ chanserv_channel_read(const char *key, struct record_data *hir)
         change.args[0].member = AddChannelUser(chanserv, cNode);
         mod_chanmode_announce(chanserv, cNode, &change);
     }
+    else if(suspended->expires > now)
+    {
+        timeq_add(suspended->expires, chanserv_expire_suspension, suspended);
+    }
 
     str = database_get_data(channel, KEY_REGISTERED, RECDB_QSTRING);
     cData->registered = str ? (time_t)strtoul(str, NULL, 0) : now;
index a8312eeb3e5ea7937cdde9a5a56994d50a6458db..38b95be5105c8eff505b1bc66381014287c988bf 100644 (file)
@@ -506,17 +506,17 @@ conf_globals(void)
     dict_t dict;
 
     info = conf_get_data("services/global/nick", RECDB_QSTRING);
-    if (info[0] == '.')
+    if (info && (info[0] == '.'))
         info = NULL;
     init_global(info);
 
     info = conf_get_data("services/nickserv/nick", RECDB_QSTRING);
-    if (info[0] == '.')
+    if (info && (info[0] == '.'))
         info = NULL;
     init_nickserv(info);
 
     info = conf_get_data("services/chanserv/nick", RECDB_QSTRING);
-    if (info[0] == '.')
+    if (info && (info[0] == '.'))
         info = NULL;
     init_chanserv(info);
 
@@ -543,7 +543,7 @@ conf_globals(void)
     }
 
     info = conf_get_data("services/opserv/nick", RECDB_QSTRING);
-    if (info[0] == '.')
+    if (info && (info[0] == '.'))
         info = NULL;
     init_opserv(info);
 }
index 6a5336bfb6111445b8effe7dafb11a09e8c31078..8c2a356d91cee7a3b5e8203c217f65b93be08014 100644 (file)
@@ -4007,6 +4007,8 @@ void
 init_opserv(const char *nick)
 {
     OS_LOG = log_register_type("OpServ", "file:opserv.log");
+    if (nick)
+        opserv = AddService(nick, "Oper Services");
     conf_register_reload(opserv_conf_read);
 
     memset(level_strings, 0, sizeof(level_strings));
@@ -4115,11 +4117,8 @@ init_opserv(const char *nick)
 
     opserv_db_init();
     saxdb_register("OpServ", opserv_saxdb_read, opserv_saxdb_write);
-    if(nick)
-    {
-        opserv = AddService(nick, "Oper Services");
+    if (nick)
         service_register(opserv, '?');
-    }
 
     reg_exit_func(opserv_db_cleanup);
     message_register_table(msgtab);