Author: anthm Date: Tue Oct 28 12:01:15 2008 New Revision: 10179 Modified: freeswitch/trunk/src/switch_core_state_machine.c Log: tweak Modified: freeswitch/trunk/src/switch_core_state_machine.c ============================================================================== --- freeswitch/trunk/src/switch_core_state_machine.c (original) +++ freeswitch/trunk/src/switch_core_state_machine.c Tue Oct 28 12:01:15 2008 @@ -78,7 +78,7 @@ for (x = 0; x < argc; x++) { char *dpname = dp[x]; char *dparg = NULL; - + if (dpname) { if ((dparg = strchr(dpname, ':'))) { *dparg++ = '\0'; @@ -89,7 +89,7 @@ if (!(dialplan_interface = switch_loadable_module_get_dialplan_interface(dpname))) { continue; } - + count++; if ((extension = dialplan_interface->hunt_function(session, dparg, NULL)) != 0) { @@ -103,8 +103,13 @@ if (!count) { if (switch_channel_test_flag(session->channel, CF_OUTBOUND)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "No Dialplan, changing state to HOLD\n"); - switch_channel_set_state(session->channel, CS_CONSUME_MEDIA); + if (switch_channel_test_flag(session->channel, CF_ANSWERED)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "No Dialplan on answered channel, changing state to HANGUP\n"); + switch_channel_hangup(session->channel, SWITCH_CAUSE_NO_ROUTE_DESTINATION); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "No Dialplan, changing state to CONSUME_MEDIA\n"); + switch_channel_set_state(session->channel, CS_CONSUME_MEDIA); + } goto end; } }