]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix core
authorBrian West <brian@freeswitch.org>
Mon, 6 Mar 2006 23:10:22 +0000 (23:10 +0000)
committerBrian West <brian@freeswitch.org>
Mon, 6 Mar 2006 23:10:22 +0000 (23:10 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@766 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_echo/mod_echo.c
src/switch_core.c

index 7570ed57179f254deca65ed3efbbb30e74d7c1b5..e4a9ea234bd8a8e613053bb5a4c68f31b963b735 100644 (file)
@@ -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 = {
index d4cc51c56fef8fe073bddae4069f86d72890d116..fc836e1149de20ab9d2947976f5965e8a002c7a9 100644 (file)
@@ -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;
 }