node = node->next;
if (this_node->ready == 0) {
- switch_core_hash_delete(globals.fifo_hash, this_node->name);
-
for (x = 0; x < MAX_PRI; x++) {
while (fifo_queue_pop(this_node->fifo_list[x], &pop, 2) == SWITCH_STATUS_SUCCESS) {
const char *caller_uuid = switch_event_get_header(pop, "unique-id");
continue;
}
switch_thread_rwlock_unlock(node->rwlock);
- if (node->ready == 1 && do_destroy) {
+
+ if (node->ready == 1 && do_destroy && node_caller_count(node) == 0 && node->consumer_count == 0) {
+ switch_core_hash_delete(globals.fifo_hash, node->name);
node->ready = 0;
}
}