[commit] r8411 - in freeswitch/trunk/src: . include mod/endpoints/mod_sofia
Author: anthm Date: Thu May 15 10:49:11 2008 New Revision: 8411 Modified: freeswitch/trunk/src/include/switch_utils.h freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c freeswitch/trunk/src/switch_ivr.c Log: update Modified: freeswitch/trunk/src/include/switch_utils.h ============================================================================== --- freeswitch/trunk/src/include/switch_utils.h (original) +++ freeswitch/trunk/src/include/switch_utils.h Thu May 15 10:49:11 2008 @@ -55,6 +55,18 @@ #define switch_is_file_path(file) (file && ((*file == '/') || strstr(file, SWITCH_URL_SEPARATOR))) #endif + +static inline switch_bool_t switch_is_moh(const char *s) +{ + if (!strcasecmp(s, "silence") || !strcasecmp(s, "indicate_hold")) { + return SWITCH_FALSE; + } + return SWITCH_TRUE; +} + + + + SWITCH_DECLARE(switch_status_t) switch_b64_encode(unsigned char *in, switch_size_t ilen, unsigned char *out, switch_size_t olen); SWITCH_DECLARE(switch_size_t) switch_b64_decode(char *in, char *out, switch_size_t olen); SWITCH_DECLARE(char *) switch_amp_encode(char *s, char *buf, switch_size_t len); @@ -73,6 +85,7 @@ SWITCH_DECLARE(switch_size_t) switch_fd_read_line(int fd, char *buf, switch_size_t len); + /*! \brief Evaluate the truthfullness of a string expression \param expr a string expression Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Thu May 15 10:49:11 2008 @@ -1852,7 +1852,7 @@ stream = tech_pvt->profile->hold_music; } - if (stream && strcasecmp(stream, "silence")) { + if (stream && switch_is_moh(stream)) { if (!strcasecmp(stream, "indicate_hold")) { switch_channel_set_flag(tech_pvt->channel, CF_SUSPEND); switch_channel_set_flag(tech_pvt->channel, CF_HOLD); Modified: freeswitch/trunk/src/switch_ivr.c ============================================================================== --- freeswitch/trunk/src/switch_ivr.c (original) +++ freeswitch/trunk/src/switch_ivr.c Thu May 15 10:49:11 2008 @@ -321,7 +321,7 @@ stream = switch_channel_get_variable(channel, SWITCH_HOLD_MUSIC_VARIABLE); } - if (stream) { + if (stream && switch_is_moh(stream)) { if ((b_session = switch_core_session_locate(b_uuid))) { switch_channel_t *b_channel = switch_core_session_get_channel(b_session); switch_ivr_broadcast(b_uuid, stream, SMF_ECHO_ALEG | SMF_LOOP); @@ -334,10 +334,14 @@ } } for (x = 0; x < loops || loops < 0; x++) { + switch_time_t b4, aftr; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Command Execute %s(%s)\n", switch_channel_get_name(channel), app_name, app_arg); + b4 = switch_timestamp_now(); switch_core_session_exec(session, application_interface, app_arg); - if (!switch_channel_ready(channel) || switch_channel_test_flag(channel, CF_STOP_BROADCAST)) { + aftr = switch_timestamp_now(); + if (!switch_channel_ready(channel) || switch_channel_test_flag(channel, CF_STOP_BROADCAST) || aftr - b4 < 500000) { break; } }
participants (1)
-
Freeswitch SVN