X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/1d0a5f6d0eadffa31b758f6b1d9fbf43e8d7fe12..e8e3ef0dfb6fbe28c07e34599f0f48336792b4b3:/src/s_user.c diff --git a/src/s_user.c b/src/s_user.c index 29a42b3..1fc9661 100644 --- a/src/s_user.c +++ b/src/s_user.c @@ -913,7 +913,7 @@ static void expire_umode_p(void *data) { struct Client *source_p = data; - char *parv[4] = {source_p->name, source_p->name, "-p", NULL}; + const char *parv[4] = {source_p->name, source_p->name, "-p", NULL}; source_p->localClient->override_timeout_event = NULL; user_mode(source_p, source_p, 3, parv); } @@ -1293,7 +1293,7 @@ user_welcome(struct Client *source_p) sendto_one_numeric(source_p, RPL_YOURHOST, form_str(RPL_YOURHOST), get_listener_name(source_p->localClient->listener), ircd_version); sendto_one_numeric(source_p, RPL_CREATED, form_str(RPL_CREATED), creation); - sendto_one_numeric(source_p, RPL_MYINFO, form_str(RPL_MYINFO), me.name, ircd_version, umodebuf, cflagsmyinfo); + sendto_one_numeric(source_p, RPL_MYINFO, form_str(RPL_MYINFO), me.name, ircd_version, umodebuf, cflagsmyinfo, cflagsparaminfo); show_isupport(source_p); @@ -1396,6 +1396,8 @@ oper_up(struct Client *source_p, struct oper_conf *oper_p) source_p->snomask &= ~SNO_NCHANGE; if(!IsOperOperwall(source_p)) source_p->umodes &= ~UMODE_OPERWALL; + if (!IsOperOverride(source_p)) + source_p->umodes &= ~UMODE_OVERRIDE; hdata.client = source_p; hdata.oldumodes = old; hdata.oldsnomask = oldsnomask; @@ -1428,6 +1430,13 @@ oper_up(struct Client *source_p, struct oper_conf *oper_p) user_join(&me, source_p, aconf->autojoin_opers, NULL); } + /* If we're setting +p, expire it */ + if(ConfigFileEntry.expire_override_time && MyClient(source_p) && source_p->umodes & UMODE_OVERRIDE) + { + source_p->localClient->override_timeout_event = + rb_event_addonce("expire_override", expire_umode_p, source_p, ConfigFileEntry.expire_override_time); + } + return (1); }