From 194acbe29334119d954906da3d594c70491f8d0b Mon Sep 17 00:00:00 2001 From: Entrope Date: Wed, 25 Feb 2004 04:06:30 +0000 Subject: [PATCH] ChanServ, OpServ and main.c bug fixes * 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 | 12 ++++++------ src/main.c | 8 ++++---- src/opserv.c | 7 +++---- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/chanserv.c b/src/chanserv.c index 1a4c6d6..19ece49 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -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; diff --git a/src/main.c b/src/main.c index a8312ee..38b95be 100644 --- a/src/main.c +++ b/src/main.c @@ -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); } diff --git a/src/opserv.c b/src/opserv.c index 6a5336b..8c2a356 100644 --- a/src/opserv.c +++ b/src/opserv.c @@ -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); -- 2.20.1