void address_list_release (struct address_list *al) { --al->refcount; DEBUGP (("Releasing %p (new refcount %d).\n", al, al->refcount)); if (al->refcount <= 0) { DEBUGP (("Deleting unused %p.\n", al)); address_list_delete (al); } }
void address_list_release (struct address_list *al) { --al->refcount; DEBUGP (("Releasing 0x%0*lx (new refcount %d).\n", PTR_FORMAT (al), al->refcount)); if (al->refcount <= 0) { DEBUGP (("Deleting unused 0x%0*lx.\n", PTR_FORMAT (al))); address_list_delete (al); } }
static int host_cleanup_mapper (void *key, void *value, void *arg_ignored) { struct address_list *al; xfree (key); /* host */ al = (struct address_list *)value; assert (al->refcount == 1); address_list_delete (al); return 0; }
static struct address_list * merge_address_lists (struct address_list *al1, struct address_list *al2) { int count = al1->count + al2->count; /* merge al2 into al1 */ al1->addresses = xrealloc (al1->addresses, sizeof (ip_address) * count); memcpy (al1->addresses + al1->count, al2->addresses, sizeof (ip_address) * al2->count); al1->count = count; address_list_delete (al2); return al1; }
void host_cleanup (void) { if (host_name_addresses_map) { hash_table_iterator iter; for (hash_table_iterate (host_name_addresses_map, &iter); hash_table_iter_next (&iter); ) { char *host = iter.key; struct address_list *al = iter.value; xfree (host); assert (al->refcount == 1); address_list_delete (al); } hash_table_destroy (host_name_addresses_map); host_name_addresses_map = NULL; } }