int network_manager_destroy(struct network_manager* nm) { if(nm->listening_sockets != NULL) { size_t num_interfaces = chaind_config(nm->chaind)->network.num_interfaces; for(size_t i = 0; i < num_interfaces; i++) { close(nm->listening_sockets[i]); } free(nm->listening_sockets); } int rc; Word_t wrc; JHSFA(wrc, nm->claimed_invs); JHSFA(wrc, nm->wanted_invs_by_inv); struct inv** pinv = NULL; Word_t index = 0; JLF(pinv, nm->block_inv_list, index); while(pinv != NULL) { free(*pinv); JLN(pinv, nm->block_inv_list, index); } JLFA(wrc, nm->block_inv_list); index = 0; JLF(pinv, nm->tx_inv_list, index); while(pinv != NULL) { free(*pinv); JLN(pinv, nm->tx_inv_list, index); } JLFA(wrc, nm->tx_inv_list); if(nm->peer_discovery != NULL) { peer_discovery_done(nm->peer_discovery); nm->peer_discovery = NULL; } JLFA(rc, nm->poll_socket_by_peer); vector_free(&nm->poll_fds); // TODO free nm->peer_list // TODO free nm->peer_by_address free(nm); return 0; }
static inline void instance_free(fcs_dbm_solver_instance_t *const instance) { for (int d = 0; d < instance->stack_depth; d++) { free(instance->stack[d].next_states); instance->stack[d].next_states = NULL; } free(instance->stack); instance->stack = NULL; Word_t rc_word; JHSFA(rc_word, instance->store); fcs_pdfs_cache_destroy(&(instance->cache)); fc_solve_compact_allocator_finish(&(instance->derived_list_allocator)); fc_solve_meta_compact_allocator_finish(&(instance->meta_alloc)); }