X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/9e7c93067226337decd23dd4fa0ed40dc123f6f4..eb1b303d56cd577c6c56e22cbb403a4470cd2920:/modules/m_rehash.c diff --git a/modules/m_rehash.c b/modules/m_rehash.c index 004bca66..dae84c2c 100644 --- a/modules/m_rehash.c +++ b/modules/m_rehash.c @@ -32,7 +32,6 @@ #include "ircd.h" #include "s_serv.h" #include "numeric.h" -#include "res.h" #include "s_conf.h" #include "s_newconf.h" #include "logger.h" @@ -44,6 +43,8 @@ #include "reject.h" #include "hash.h" #include "cache.h" +#include "irc_radixtree.h" +#include "sslproc.h" static int mo_rehash(struct Client *, struct Client *, int, const char **); static int me_rehash(struct Client *, struct Client *, int, const char **); @@ -82,7 +83,16 @@ rehash_dns(struct Client *source_p) remote_rehash_oper_p = source_p; /* reread /etc/resolv.conf and reopen res socket */ - restart_resolver(); + restart_authd(); +} + +static void +rehash_ssld(struct Client *source_p) +{ + sendto_realops_snomask(SNO_GENERAL, L_ALL, "%s is restarting ssld", + get_oper_name(source_p)); + + restart_ssld(); } static void @@ -186,6 +196,7 @@ static void rehash_tresvs(struct Client *source_p) { struct ConfItem *aconf; + struct irc_radixtree_iteration_state iter; rb_dlink_node *ptr; rb_dlink_node *next_ptr; int i; @@ -195,17 +206,14 @@ rehash_tresvs(struct Client *source_p) if (!MyConnect(source_p)) remote_rehash_oper_p = source_p; - HASH_WALK_SAFE(i, R_MAX, ptr, next_ptr, resvTable) + IRC_RADIXTREE_FOREACH(aconf, &iter, resv_tree) { - aconf = ptr->data; - if(!aconf->hold || aconf->lifetime) continue; + irc_radixtree_delete(resv_tree, aconf->host); free_conf(aconf); - rb_dlinkDestroy(ptr, &resvTable[i]); } - HASH_WALK_END RB_DLINK_FOREACH_SAFE(ptr, next_ptr, resv_conf_list.head) { @@ -278,6 +286,7 @@ static struct hash_commands rehash_commands[] = { {"BANS", rehash_bans_loc }, {"DNS", rehash_dns }, + {"SSLD", rehash_ssld }, {"MOTD", rehash_motd }, {"OMOTD", rehash_omotd }, {"TKLINES", rehash_tklines },