struct ConnectionClass *tmp;
tmp = (struct ConnectionClass*) MyMalloc(sizeof(struct ConnectionClass));
+ tmp->ref_count = 1;
assert(0 != tmp);
++connClassAllocCount;
return tmp;
void free_class(struct ConnectionClass* p)
{
- if (p) {
+ if (p)
+ {
assert(0 == p->valid);
if (p->cc_name)
- MyFree(p->cc_name);
+ MyFree(p->cc_name);
MyFree(p);
--connClassAllocCount;
}
*/
if (cl->valid)
prev = cl;
- else {
+ else
+ {
prev->next = cl->next;
- if (0 == cl->ref_count)
+ if (0 == --cl->ref_count)
free_class(cl);
}
}
if (acptr && !IsMe(acptr) && (cli_confs(acptr)))
for (tmp = cli_confs(acptr); tmp; tmp = tmp->next)
{
- if (tmp->value.aconf && !(cl = tmp->value.aconf->conn_class))
+ if (tmp->value.aconf && (cl = tmp->value.aconf->conn_class))
return ConClass(cl);
}
return "(null-class)";
t->next = p;
}
else
+ {
+ if (ConClass(t) != NULL)
+ MyFree(ConClass(t));
p = t;
+ }
Debug((DEBUG_DEBUG, "Add Class %s: cf: %u pf: %u ml: %u sq: %d",
name, confreq, ping, maxli, sendq));
ConClass(p) = name;
}
void
-report_classes(struct Client *sptr)
+report_classes(struct Client *sptr, struct StatDesc *sd, int stat,
+ char *param)
{
struct ConnectionClass *cltmp;