From 06a9cae17ef165f8812b6fa9ed1dc04205eff3d5 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 25 Oct 2007 21:02:31 +0000 Subject: [PATCH] fix MODAPP-22 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6058 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- .../applications/mod_conference/mod_conference.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index b8215a84ff..80d5b5a4bd 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -491,8 +491,9 @@ static switch_status_t conference_add_member(conference_obj_t * conference, conf switch_mutex_lock(member->audio_in_mutex); switch_mutex_lock(member->audio_out_mutex); switch_mutex_lock(member->flag_mutex); - switch_mutex_lock(conference->member_mutex); + + switch_clear_flag(conference, CFLAG_DESTRUCT); member->conference = conference; member->next = conference->members; member->energy_level = conference->energy_level; @@ -4149,7 +4150,7 @@ SWITCH_STANDARD_APP(conference_function) goto done; } } - + if (conference->special_announce) { conference_local_play_file(conference, session, conference->special_announce, CONF_DEFAULT_LEADIN); } @@ -4326,6 +4327,14 @@ SWITCH_STANDARD_APP(conference_function) switch_buffer_destroy(&member.audio_buffer); switch_buffer_destroy(&member.mux_buffer); + if (conference) { + switch_mutex_lock(conference->mutex); + if (switch_test_flag(conference, CFLAG_DYNAMIC) && conference->count == 0) { + switch_set_flag_locked(conference, CFLAG_DESTRUCT); + } + switch_mutex_unlock(conference->mutex); + } + /* Release the config registry handle */ if (cxml) { switch_xml_free(cxml);