PRIVATE VOID remove_thread_info(ThreadInfo *info) { ThreadQ *threadQ = g_threadQ; dllist_del(&info->node); dllist_del(&info->hashNode); threadQ->num--; }
unsigned int banlist_del (banlist_t * list, banlist_entry_t * e) { if (!e) return 0; ASSERT (list->netmask_inuse[netmask_to_numbits (e->netmask)]); list->netmask_inuse[netmask_to_numbits (e->netmask)]--; dllist_del ((dllist_entry_t *) (&e->list_ip)); dllist_del ((dllist_entry_t *) (&e->list_name)); if (e->message) bf_free (e->message); free (e); return 1; }
unsigned int banlist_client_del (banlist_client_t * list, banlist_client_entry_t * e) { if (!e) return 0; dllist_del ((dllist_entry_t *) e); if (e->message) bf_free (e->message); free (e); return 1; }
unsigned int banlist_client_cleanup (banlist_client_t * list) { uint32_t i; banlist_client_entry_t *e, *n, *l; dlhashlist_foreach (list, i) { l = dllist_bucket (list, i); for (e = (banlist_client_entry_t *) l->dllist.next; e != l; e = n) { n = (banlist_client_entry_t *) e->dllist.next; dllist_del ((dllist_entry_t *) e); bf_free (e->message); free (e); } }
unsigned int banlist_client_del_byclient (banlist_client_t * list, unsigned char *client, double min, double max) { banlist_client_entry_t *e, *l; l = dllist_bucket (list, SuperFastHash (client, strlen (client)) & BANLIST_NICK_HASHMASK); dllist_foreach (l, e) if ((!strncmp (e->client, client, NICKLENGTH)) && (e->minVersion == min) && (e->maxVersion == max)) break; if (e == dllist_end (l)) return 0; dllist_del ((dllist_entry_t *) e); return 1; }