]> jfr.im git - solanum.git/blobdiff - modules/m_rehash.c
ircd: support restarting ssld processes
[solanum.git] / modules / m_rehash.c
index 004bca664f3b6dc4e36dd7b7da261ecc2da71f39..dae84c2c847f713817435dbd842314cc90bf9625 100644 (file)
@@ -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          },