mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-14 08:05:37 +00:00
FS-2879
This commit is contained in:
parent
1e0df408cf
commit
ee562c82e1
@ -3075,16 +3075,24 @@ SWITCH_STANDARD_APP(fifo_function)
|
||||
done:
|
||||
|
||||
switch_mutex_lock(globals.mutex);
|
||||
if (node && node->ready == FIFO_DELAY_DESTROY && node->consumer_count == 0 && node_caller_count(node) == 0) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_NOTICE, "%s removed.\n", node->name);
|
||||
switch_core_hash_delete(globals.fifo_hash, node->name);
|
||||
if (node && node->ready == FIFO_DELAY_DESTROY) {
|
||||
int doit = 0;
|
||||
|
||||
switch_thread_rwlock_wrlock(node->rwlock);
|
||||
node->ready = 0;
|
||||
switch_mutex_lock(node->mutex);
|
||||
switch_core_hash_destroy(&node->consumer_hash);
|
||||
switch_mutex_unlock(node->mutex);
|
||||
doit = node->consumer_count == 0 && node_caller_count(node) == 0;
|
||||
switch_thread_rwlock_unlock(node->rwlock);
|
||||
switch_core_destroy_memory_pool(&node->pool);
|
||||
|
||||
if (doit) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_NOTICE, "%s removed.\n", node->name);
|
||||
switch_core_hash_delete(globals.fifo_hash, node->name);
|
||||
|
||||
node->ready = 0;
|
||||
switch_mutex_lock(node->mutex);
|
||||
switch_core_hash_destroy(&node->consumer_hash);
|
||||
switch_mutex_unlock(node->mutex);
|
||||
switch_thread_rwlock_unlock(node->rwlock);
|
||||
switch_core_destroy_memory_pool(&node->pool);
|
||||
}
|
||||
|
||||
}
|
||||
switch_mutex_unlock(globals.mutex);
|
||||
|
Loading…
x
Reference in New Issue
Block a user