From: Anthony Minessale Date: Fri, 31 May 2013 19:45:47 +0000 (-0500) Subject: FS-5488 --resolve X-Git-Tag: v1.4.1~117 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5835e0d541819b53da8af65cb9a4dc42bb93050a;p=thirdparty%2Ffreeswitch.git FS-5488 --resolve --- diff --git a/src/mod/applications/mod_fifo/mod_fifo.c b/src/mod/applications/mod_fifo/mod_fifo.c index eeb7b6aba3..b2c7330cc2 100644 --- a/src/mod/applications/mod_fifo/mod_fifo.c +++ b/src/mod/applications/mod_fifo/mod_fifo.c @@ -1854,8 +1854,6 @@ static void *SWITCH_THREAD_FUNC node_thread_run(switch_thread_t *thread, void *o 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"); @@ -3293,7 +3291,9 @@ SWITCH_STANDARD_APP(fifo_function) 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; } }