diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index d5bb693bb8..487d9e450d 100644 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -443,7 +443,7 @@ SWITCH_STANDARD_APP(set_audio_level_function) } -#define SET_MUTE_SYNTAX "[read|write] [true|false]" +#define SET_MUTE_SYNTAX "[read|write] [[true|cn level]|false]" SWITCH_STANDARD_APP(set_mute_function) { char *argv[2] = { 0 }; @@ -459,8 +459,10 @@ SWITCH_STANDARD_APP(set_mute_function) switch_core_session_get_name(session), SET_MUTE_SYNTAX); return; } - - level = switch_true(argv[1]); + + if ((level = atoi(argv[1])) <= 0) { + level = switch_true(argv[1]); + } switch_ivr_session_audio(session, "mute", argv[0], level); diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 6c3bce19b4..1943c354a4 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -1391,7 +1391,11 @@ static switch_bool_t session_audio_callback(switch_media_bug_t *bug, void *user_ if (frame) { if (mute) { - switch_generate_sln_silence(frame->data, frame->datalen / 2, 400); + if (mute > 1) { + switch_generate_sln_silence(frame->data, frame->datalen / 2, mute); + } else { + memset(frame->data, 0, frame->datalen); + } } else if (level) { switch_change_sln_volume(frame->data, frame->datalen / 2, level); }