/** * Final cleanup. */ void cq_close(void) { if G_LIKELY(cq_global_inited) { /* No warning if we were recursing */ callout_queue->cq_current = NULL; cq_free_null(&callout_queue); } }
/** * Remove one reference to callout queue, discarding it when nobody * references it anymore. */ static void ag_unref_callout_queue(void) { g_assert(aging_refcnt > 0); if (0 == --aging_refcnt) cq_free_null(&aging_cq); g_assert((aging_cq != NULL) == (aging_refcnt != 0)); }
/** * Shutdown the DHT publisher. */ void G_COLD publisher_close(void) { /* * Purge data we no longer know about from the persisted DB. */ dbmw_foreach_remove(db_pubdata, publisher_remove_orphan, NULL); /* * Final cleanup. */ hikset_foreach(publisher_sha1, free_entry, NULL); hikset_free_null(&publisher_sha1); dbstore_close(db_pubdata, settings_dht_db_dir(), db_pubdata_base); db_pubdata = NULL; cq_free_null(&publish_cq); }