[Freeswitch-svn] [commit] r7365 - freeswitch/trunk/src/mod/endpoints/mod_sofia
Freeswitch SVN
anthm at freeswitch.org
Fri Jan 25 20:53:43 EST 2008
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;
More information about the Freeswitch-svn
mailing list