mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-11-12 04:27:06 +00:00
fix some minor internal dtmf issues
This commit is contained in:
1 parent
637a5ed83d
commit
4cb49fbaa0
3 files changed
+43
-38
No files matched your search
+16
-13
@@ -430,9 +430,12 @@ SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf_string(switch_channel_
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
|
||||
if (*dtmf_string == '!') {
|
||||
|
||||
dtmf.flags = DTMF_FLAG_SKIP_PROCESS;
|
||||
|
||||
if (*dtmf_string == '~') {
|
||||
dtmf_string++;
|
||||
dtmf.flags = DTMF_FLAG_SKIP_PROCESS;
|
||||
dtmf.flags = 0;
|
||||
}
|
||||
|
||||
string = switch_core_session_strdup(channel->session, dtmf_string);
|
||||
@@ -448,20 +451,20 @@ SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf_string(switch_channel_
|
||||
}
|
||||
}
|
||||
|
||||
if (dtmf.duration > switch_core_max_dtmf_duration(0)) {
|
||||
switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_WARNING, "EXCESSIVE DTMF DIGIT LEN %c %d\n", dtmf.digit, dtmf.duration);
|
||||
dtmf.duration = switch_core_max_dtmf_duration(0);
|
||||
} else if (dtmf.duration < switch_core_min_dtmf_duration(0)) {
|
||||
switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_WARNING, "SHORT DTMF DIGIT LEN %c %d\n", dtmf.digit, dtmf.duration);
|
||||
dtmf.duration = switch_core_min_dtmf_duration(0);
|
||||
} else if (!dtmf.duration) {
|
||||
dtmf.duration = switch_core_default_dtmf_duration(0);
|
||||
}
|
||||
|
||||
|
||||
for (p = argv[i]; p && *p; p++) {
|
||||
if (is_dtmf(*p)) {
|
||||
dtmf.digit = *p;
|
||||
|
||||
if (dtmf.duration > switch_core_max_dtmf_duration(0)) {
|
||||
switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_WARNING, "EXCESSIVE DTMF DIGIT LEN %c %d\n", dtmf.digit, dtmf.duration);
|
||||
dtmf.duration = switch_core_max_dtmf_duration(0);
|
||||
} else if (dtmf.duration < switch_core_min_dtmf_duration(0)) {
|
||||
switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_WARNING, "SHORT DTMF DIGIT LEN %c %d\n", dtmf.digit, dtmf.duration);
|
||||
dtmf.duration = switch_core_min_dtmf_duration(0);
|
||||
} else if (!dtmf.duration) {
|
||||
dtmf.duration = switch_core_default_dtmf_duration(0);
|
||||
}
|
||||
|
||||
if (switch_channel_queue_dtmf(channel, &dtmf) == SWITCH_STATUS_SUCCESS) {
|
||||
switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "%s Queue dtmf\ndigit=%c ms=%u samples=%u\n",
|
||||
switch_channel_get_name(channel), dtmf.digit, dur, dtmf.duration);
|
||||
|
||||
Reference in new issue
Block a user