X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fchanserv.c;h=c1d6f9124ec950e86630a91afe20fcb1a2d49883;hb=b76e9de89cc343f6d675a9f899fd4bcf94166084;hp=7f0596fd944a9ef8a1de6108a5e8e06b3a727867;hpb=36612e1ec929a26c24b9e87369a9628e392f1430;p=srvx.git diff --git a/src/chanserv.c b/src/chanserv.c index 7f0596f..c1d6f91 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -1662,7 +1662,6 @@ chanserv_get_owned_count(struct handle_info *hi) static CHANSERV_FUNC(cmd_register) { - struct mod_chanmode *change; struct handle_info *handle; struct chanData *cData; struct modeNode *mn; @@ -1752,13 +1751,20 @@ static CHANSERV_FUNC(cmd_register) scan_user_presence(add_channel_user(cData, handle, UL_OWNER, 0, NULL), NULL); cData->modes = chanserv_conf.default_modes; if(off_channel > 0) - cData->modes.modes_set |= MODE_REGISTERED; - change = mod_chanmode_dup(&cData->modes, 1); - change->args[change->argc].mode = MODE_CHANOP; - change->args[change->argc].u.member = AddChannelUser(chanserv, channel); - change->argc++; - mod_chanmode_announce(chanserv, channel, change); - mod_chanmode_free(change); + cData->modes.modes_set |= MODE_REGISTERED; + if (IsOffChannel(cData)) + { + mod_chanmode_announce(chanserv, channel, &cData->modes); + } + else + { + struct mod_chanmode *change = mod_chanmode_dup(&cData->modes, 1); + change->args[change->argc].mode = MODE_CHANOP; + change->args[change->argc].u.member = AddChannelUser(chanserv, channel); + change->argc++; + mod_chanmode_announce(chanserv, channel, change); + mod_chanmode_free(change); + } /* Initialize the channel's max user record. */ cData->max = channel->members.used; @@ -6476,8 +6482,6 @@ chanserv_conf_read(void) else strlist = alloc_string_list(2); chanserv_conf.old_ban_names = strlist; - /* the variable itself is actually declared in proto-common.c; this is equally - * parse issue. */ str = database_get_data(conf_node, "off_channel", RECDB_QSTRING); off_channel = str ? atoi(str) : 0; }