if ((last_member = interface_exists(q, interface))) { if ((look = q->members) == last_member) { ast_mutex_lock(&last_member->member_lock); q->members = last_member->next; q->membercount--; ast_mutex_unlock(&last_member->member_lock); } else { while (look != NULL) { if (look->next == last_member) { ast_mutex_lock(&last_member->member_lock); look->next = last_member->next; q->membercount--; ast_mutex_unlock(&last_member->member_lock); break; } else { look = look->next; } } } manager_event(EVENT_FLAG_AGENT, "QueueMemberRemoved", "Queue: %s\r\n" "Location: %s\r\n" "MemberName: %s\r\n", q->name, last_member->interface, last_member->membername); usleep(1); ast_mutex_lock(&last_member->member_lock); ast_mutex_unlock(&last_member->member_lock); ast_mutex_destroy(&last_member->member_lock); free(last_member);