[commit] r7365 - freeswitch/trunk/src/mod/endpoints/mod_sofia
Author: anthm Date: Fri Jan 25 20:53:42 2008 New Revision: 7365 Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Log: prevent invalid state change Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Fri Jan 25 20:53:42 2008 @@ -1808,7 +1808,9 @@ switch_channel_set_flag(nchannel, CF_OUTBOUND); switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND); switch_clear_flag_locked(tech_pvt, TFLAG_LATE_NEGOTIATION); - switch_channel_set_state(nchannel, CS_INIT); + if (switch_channel_get_state(nchannel) == CS_NEW) { + switch_channel_set_state(nchannel, CS_INIT); + } tech_pvt->caller_profile = caller_profile; *new_session = nsession; cause = SWITCH_CAUSE_SUCCESS; Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Fri Jan 25 20:53:42 2008 @@ -1530,7 +1530,9 @@ if (switch_channel_test_flag(channel, CF_BYPASS_MEDIA)) { switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "RECEIVED_NOMEDIA"); switch_set_flag_locked(tech_pvt, TFLAG_READY); - switch_channel_set_state(channel, CS_INIT); + if (switch_channel_get_state(channel) == CS_NEW) { + switch_channel_set_state(channel, CS_INIT); + } switch_set_flag(tech_pvt, TFLAG_SDP); goto done; } else { @@ -1553,7 +1555,9 @@ su_home_t *home = NULL; switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "RECEIVED"); switch_set_flag_locked(tech_pvt, TFLAG_READY); - switch_channel_set_state(channel, CS_INIT); + if (switch_channel_get_state(channel) == CS_NEW) { + switch_channel_set_state(channel, CS_INIT); + } switch_set_flag(tech_pvt, TFLAG_SDP); if (replaces_str) { home = su_home_new(sizeof(*home)); @@ -1748,7 +1752,9 @@ } if (switch_channel_get_state(channel) == CS_HIBERNATE) { switch_set_flag_locked(tech_pvt, TFLAG_READY); - switch_channel_set_state(channel, CS_INIT); + if (switch_channel_get_state(channel) == CS_NEW) { + switch_channel_set_state(channel, CS_INIT); + } switch_set_flag(tech_pvt, TFLAG_SDP); } goto done;
participants (1)
-
Freeswitch SVN