From 45df9ee1d65e1ab371f98361e371b1b291ddc9c1 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 25 Mar 2008 18:48:20 +0000 Subject: [PATCH] update git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7961 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/applications/mod_fifo/mod_fifo.c | 46 ++++++++++++------------ src/mod/endpoints/mod_sofia/sofia.c | 5 +-- src/mod/endpoints/mod_sofia/sofia_glue.c | 5 +-- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/mod/applications/mod_fifo/mod_fifo.c b/src/mod/applications/mod_fifo/mod_fifo.c index 4f1f9c0348..fbcec3a965 100644 --- a/src/mod/applications/mod_fifo/mod_fifo.c +++ b/src/mod/applications/mod_fifo/mod_fifo.c @@ -337,8 +337,8 @@ SWITCH_STANDARD_APP(fifo_function) int custom_pop = 0; int pop_array[MAX_PRI] = { 0 }; char *pop_list[MAX_PRI] = { 0 }; - const char *fifo_consumer_wrapup_sound = NULL; - const char *fifo_consumer_wrapup_key = NULL; + const char *fifo_consumer_wrapup_sound = NULL; + const char *fifo_consumer_wrapup_key = NULL; char buf[5] = ""; if (argc > 3) { @@ -394,6 +394,7 @@ SWITCH_STANDARD_APP(fifo_function) pop = NULL; if (moh) { + memset(&args, 0, sizeof(args)); args.read_frame_callback = read_frame_callback; args.user_data = node; switch_ivr_play_file(session, NULL, moh, &args); @@ -511,27 +512,26 @@ SWITCH_STANDARD_APP(fifo_function) if (nowait) { done = 1; } - - fifo_consumer_wrapup_sound = switch_channel_get_variable(channel, "fifo_consumer_wrapup_sound"); - fifo_consumer_wrapup_key = switch_channel_get_variable(channel, "fifo_consumer_wrapup_key"); - memset(buf, 0, sizeof(buf)); - - if (!switch_strlen_zero(fifo_consumer_wrapup_sound)) { - args.buf = buf; - args.buflen = sizeof(buf); - - memset(&args, 0, sizeof(args)); - switch_ivr_play_file(session, NULL, fifo_consumer_wrapup_sound, &args); - } - - if (!switch_strlen_zero(fifo_consumer_wrapup_key) && strcmp(buf, fifo_consumer_wrapup_key)) { - for(;;) { - char terminator = 0; - switch_ivr_collect_digits_count(session, buf, sizeof(buf)-1, 1, fifo_consumer_wrapup_key, &terminator, 0, 0, 0); - if (terminator == *fifo_consumer_wrapup_key) { - break; - } - } + + fifo_consumer_wrapup_sound = switch_channel_get_variable(channel, "fifo_consumer_wrapup_sound"); + fifo_consumer_wrapup_key = switch_channel_get_variable(channel, "fifo_consumer_wrapup_key"); + memset(buf, 0, sizeof(buf)); + + if (!switch_strlen_zero(fifo_consumer_wrapup_sound)) { + memset(&args, 0, sizeof(args)); + args.buf = buf; + args.buflen = sizeof(buf); + switch_ivr_play_file(session, NULL, fifo_consumer_wrapup_sound, &args); + } + + if (!switch_strlen_zero(fifo_consumer_wrapup_key) && strcmp(buf, fifo_consumer_wrapup_key)) { + for(;;) { + char terminator = 0; + switch_ivr_collect_digits_count(session, buf, sizeof(buf)-1, 1, fifo_consumer_wrapup_key, &terminator, 0, 0, 0); + if (terminator == *fifo_consumer_wrapup_key) { + break; + } + } } } diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 9c3d48c0c2..1a2a1117d4 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1828,8 +1828,9 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } break; case nua_callstate_ready: - switch_channel_clear_flag(channel, CF_REQ_MEDIA); - + if (channel) { + switch_channel_clear_flag(channel, CF_REQ_MEDIA); + } if (tech_pvt && nh == tech_pvt->nh2) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Cheater Reinvite!\n"); switch_set_flag_locked(tech_pvt, TFLAG_REINVITE); diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 3608715d8b..6ba5d96187 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -222,8 +222,9 @@ void sofia_glue_set_local_sdp(private_object_t *tech_pvt, const char *ip, uint32 #endif } - if (switch_test_flag(tech_pvt, TFLAG_VIDEO)) { - if (!tech_pvt->local_sdp_video_port) { + if (switch_test_flag(tech_pvt, TFLAG_VIDEO)) { + if (!switch_channel_test_flag(tech_pvt->channel, CF_ANSWERED) && !switch_channel_test_flag(tech_pvt->channel, CF_EARLY_MEDIA) && + !tech_pvt->local_sdp_video_port) { sofia_glue_tech_choose_video_port(tech_pvt); }