diff --git a/ircd/s_conf.c b/ircd/s_conf.c index 4cbb0d5e..700b8f7d 100644 --- a/ircd/s_conf.c +++ b/ircd/s_conf.c @@ -25,6 +25,7 @@ #include "stdinc.h" #include "ircd_defs.h" #include "s_conf.h" +#include "s_user.h" #include "s_newconf.h" #include "newconf.h" #include "s_serv.h" @@ -630,6 +631,8 @@ attach_conf(struct Client *client_p, struct ConfItem *aconf) bool rehash(bool sig) { + rb_dlink_node *n; + hook_data_rehash hdata = { sig }; if(sig) @@ -648,6 +651,16 @@ rehash(bool sig) open_logfiles(); + RB_DLINK_FOREACH(n, local_oper_list.head) + { + struct Client *oper = n->data; + const char *modeparv[4]; + modeparv[0] = modeparv[1] = oper->name; + modeparv[2] = "+"; + modeparv[3] = NULL; + user_mode(oper, oper, 3, modeparv); + } + call_hook(h_rehash, &hdata); return false; }