]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-5488 --resolve
authorAnthony Minessale <anthm@freeswitch.org>
Fri, 31 May 2013 19:45:47 +0000 (14:45 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Fri, 31 May 2013 19:45:51 +0000 (14:45 -0500)
src/mod/applications/mod_fifo/mod_fifo.c

index 8dd8f17f6d6a5daa710544f9b77bebde4eb466e8..ffa1ec8903bc54e362d5c4be0ba8abc37d28087d 100644 (file)
@@ -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;
                }
        }