void delsubuser(subuser **current, acetables *g_ape) { subuser *del = *current; FIRE_EVENT_NONSTOP(delsubuser, del, g_ape); ((*current)->user->nsub)--; *current = (*current)->next; destroy_raw_pool(del->raw_pools.low.rawhead); destroy_raw_pool(del->raw_pools.high.rawhead); clear_properties(&del->properties); if (del->state == ALIVE) { del->wait_for_free = 1; do_died(del); } else { free(del); } }
void delsubuser(subuser **current, acetables *g_ape) { subuser *del = *current; USERS *user = (*current)->user; FIRE_EVENT_NULL(delsubuser, del, g_ape); ((*current)->user->nsub)--; *current = (*current)->next; destroy_raw_pool(del->raw_pools.low.rawhead); destroy_raw_pool(del->raw_pools.high.rawhead); del->raw_pools.low.rawhead = del->raw_pools.low.rawfoot = NULL; del->raw_pools.high.rawhead = del->raw_pools.high.rawfoot = NULL; del->raw_pools.nraw = 0; del->client->attach = NULL; clear_properties(&del->properties); if (del->state == ALIVE) { del->wait_for_free = 1; do_died(del); } else { free(del); } /* * If this is the last subuser, del the user */ if (user->nsub <= 0) { user->idle = time(NULL) - (TIMEOUT_SEC - USRLEFT_SEC); } HOOK_EVENT(delsubuser, del, g_ape); }