static void control_dtor(void *obj) { struct stasis_app_control *control = obj; ao2_cleanup(control->command_queue); ast_channel_cleanup(control->channel); ao2_cleanup(control->app); ast_cond_destroy(&control->wait_cond); AST_LIST_HEAD_DESTROY(&control->add_rules); AST_LIST_HEAD_DESTROY(&control->remove_rules); }
static void control_dtor(void *obj) { struct stasis_app_control *control = obj; AST_LIST_HEAD_DESTROY(&control->add_rules); AST_LIST_HEAD_DESTROY(&control->remove_rules); /* We may have a lingering silence generator; free it */ ast_channel_stop_silence_generator(control->channel, control->silgen); control->silgen = NULL; ao2_cleanup(control->command_queue); ast_cond_destroy(&control->wait_cond); }
static void dialed_interface_destroy(void *data) { struct ast_dialed_interface *di = NULL; AST_LIST_HEAD(, ast_dialed_interface) *dialed_interface_list = data; if (!dialed_interface_list) { return; } AST_LIST_LOCK(dialed_interface_list); while ((di = AST_LIST_REMOVE_HEAD(dialed_interface_list, list))) ast_free(di); AST_LIST_UNLOCK(dialed_interface_list); AST_LIST_HEAD_DESTROY(dialed_interface_list); ast_free(dialed_interface_list); }
/*! \brief Destructor for hdr_list */ static void hdr_list_destroy(void *obj) { AST_LIST_HEAD_DESTROY((struct hdr_list *) obj); }