コード例 #1
0
ファイル: network_manager.c プロジェクト: chaind/chaind
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;
}
コード例 #2
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));
}