From 6737ae52d9a7ea4ee1b20e12de28ad4903400133 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 28 Oct 2010 15:34:42 -0500 Subject: [PATCH] FS-2801 --- src/mod/endpoints/mod_sofia/sofia.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 833cf6c51f..0f9e265c4d 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -4684,7 +4684,9 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, if (!switch_channel_get_variable(other_channel, SWITCH_B_SDP_VARIABLE)) { switch_channel_set_variable(other_channel, SWITCH_B_SDP_VARIABLE, r_sdp); } + switch_mutex_unlock(tech_pvt->sofia_mutex); switch_channel_pre_answer(other_channel); + switch_mutex_lock(tech_pvt->sofia_mutex); switch_core_session_rwunlock(other_session); } goto done; @@ -5112,7 +5114,9 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (other_session = switch_core_session_locate(uuid))) { other_channel = switch_core_session_get_channel(other_session); + switch_mutex_unlock(tech_pvt->sofia_mutex); switch_channel_answer(other_channel); + switch_mutex_lock(tech_pvt->sofia_mutex); switch_core_session_rwunlock(other_session); } } @@ -5141,7 +5145,9 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, if (!switch_channel_get_variable(other_channel, SWITCH_B_SDP_VARIABLE)) { switch_channel_set_variable(other_channel, SWITCH_B_SDP_VARIABLE, r_sdp); } + switch_mutex_unlock(tech_pvt->sofia_mutex); switch_channel_answer(other_channel); + switch_mutex_lock(tech_pvt->sofia_mutex); switch_core_session_rwunlock(other_session); } goto done;