int ast_netsock_release(struct ast_netsock_list *list) { ASTOBJ_CONTAINER_DESTROYALL(list, ast_netsock_destroy); ASTOBJ_CONTAINER_DESTROY(list); return 0; }
static int unload_module(void *mod) { /* this destructor stops any running smdi_read threads */ ASTOBJ_CONTAINER_DESTROYALL(&smdi_ifaces, ast_smdi_interface_destroy); ASTOBJ_CONTAINER_DESTROY(&smdi_ifaces); return 0; }
/*! \brief ast_smdi_interface destructor. */ void ast_smdi_interface_destroy(struct ast_smdi_interface *iface) { if (iface->thread != AST_PTHREADT_NULL && iface->thread != AST_PTHREADT_STOP) { pthread_cancel(iface->thread); pthread_join(iface->thread, NULL); } iface->thread = AST_PTHREADT_STOP; if(iface->file) fclose(iface->file); ASTOBJ_CONTAINER_DESTROYALL(&iface->md_q, ast_smdi_md_message_destroy); ASTOBJ_CONTAINER_DESTROYALL(&iface->mwi_q, ast_smdi_mwi_message_destroy); ASTOBJ_CONTAINER_DESTROY(&iface->md_q); ASTOBJ_CONTAINER_DESTROY(&iface->mwi_q); free(iface); ast_atomic_fetchadd_int(&me->usecnt, -1); }