diff --git a/src/mod/applications/mod_echo/mod_echo.c b/src/mod/applications/mod_echo/mod_echo.c index 7570ed5717..e4a9ea234b 100644 --- a/src/mod/applications/mod_echo/mod_echo.c +++ b/src/mod/applications/mod_echo/mod_echo.c @@ -36,33 +36,13 @@ static const char modname[] = "mod_echo"; static void echo_function(switch_core_session *session, char *data) { switch_channel *channel; - switch_frame *frame; - char *codec_name; - switch_codec codec, *read_codec; channel = switch_core_session_get_channel(session); assert(channel != NULL); - read_codec = switch_core_session_get_read_codec(session); - switch_channel_answer(channel); - codec_name = "L16"; - if (switch_core_codec_init(&codec, - codec_name, - read_codec->implementation->samples_per_second, - read_codec->implementation->microseconds_per_frame / 1000, - read_codec->implementation->number_of_channels, - SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, - NULL, switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) { - switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Raw Codec Activated\n"); - switch_core_session_set_read_codec(session, &codec); - switch_core_session_set_write_codec(session, &codec); - while(switch_channel_ready(channel)) { - switch_core_session_read_frame(session, &frame, -1, 0); - switch_core_session_write_frame(session, frame, -1 ,0); - } - } + switch_channel_set_state(channel, CS_LOOPBACK); } static const switch_application_interface echo_application_interface = { diff --git a/src/switch_core.c b/src/switch_core.c index d4cc51c56f..fc836e1149 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1621,7 +1621,9 @@ static void switch_core_standard_on_execute(switch_core_session *session) extension->current_application = extension->current_application->next; } - switch_channel_set_state(session->channel, CS_HANGUP); + if (switch_channel_get_state(session->channel) == CS_EXECUTE) { + switch_channel_set_state(session->channel, CS_HANGUP); + } } static void switch_core_standard_on_loopback(switch_core_session *session) @@ -1942,6 +1944,7 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session *session) if (state < CS_DONE && midstate == switch_channel_get_state(session->channel)) { switch_thread_cond_wait(session->cond, session->mutex); } + } session->thread_running = 0; }