ircd: hash: use an irc_radixtree for storing resv's
This commit is contained in:
parent
5c7c7d65c2
commit
46be39faab
6 changed files with 32 additions and 62 deletions
|
@ -43,6 +43,7 @@
|
|||
#include "reject.h"
|
||||
#include "hash.h"
|
||||
#include "cache.h"
|
||||
#include "irc_radixtree.h"
|
||||
|
||||
static int mo_rehash(struct Client *, struct Client *, int, const char **);
|
||||
static int me_rehash(struct Client *, struct Client *, int, const char **);
|
||||
|
@ -185,6 +186,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;
|
||||
|
@ -194,17 +196,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)
|
||||
{
|
||||
|
|
|
@ -831,6 +831,7 @@ static void
|
|||
stats_tresv(struct Client *source_p)
|
||||
{
|
||||
struct ConfItem *aconf;
|
||||
struct irc_radixtree_iteration_state state;
|
||||
rb_dlink_node *ptr;
|
||||
int i;
|
||||
|
||||
|
@ -843,15 +844,13 @@ stats_tresv(struct Client *source_p)
|
|||
'q', aconf->port, aconf->host, aconf->passwd);
|
||||
}
|
||||
|
||||
HASH_WALK(i, R_MAX, ptr, resvTable)
|
||||
IRC_RADIXTREE_FOREACH(aconf, &state, resv_tree)
|
||||
{
|
||||
aconf = ptr->data;
|
||||
if(aconf->hold)
|
||||
sendto_one_numeric(source_p, RPL_STATSQLINE,
|
||||
form_str(RPL_STATSQLINE),
|
||||
'q', aconf->port, aconf->host, aconf->passwd);
|
||||
}
|
||||
HASH_WALK_END
|
||||
}
|
||||
|
||||
|
||||
|
@ -859,6 +858,7 @@ static void
|
|||
stats_resv(struct Client *source_p)
|
||||
{
|
||||
struct ConfItem *aconf;
|
||||
struct irc_radixtree_iteration_state state;
|
||||
rb_dlink_node *ptr;
|
||||
int i;
|
||||
|
||||
|
@ -871,15 +871,13 @@ stats_resv(struct Client *source_p)
|
|||
'Q', aconf->port, aconf->host, aconf->passwd);
|
||||
}
|
||||
|
||||
HASH_WALK(i, R_MAX, ptr, resvTable)
|
||||
IRC_RADIXTREE_FOREACH(aconf, &state, resv_tree)
|
||||
{
|
||||
aconf = ptr->data;
|
||||
if(!aconf->hold)
|
||||
sendto_one_numeric(source_p, RPL_STATSQLINE,
|
||||
form_str(RPL_STATSQLINE),
|
||||
'Q', aconf->port, aconf->host, aconf->passwd);
|
||||
}
|
||||
HASH_WALK_END
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue