mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-07-14 19:16:59 +00:00
MODAPP-223 so jeev doesnt have to hangup when he calls voicemail muted
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12315 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
d369407b26
commit
d3af01c240
@ -120,6 +120,7 @@ struct vm_profile {
|
|||||||
uint32_t max_login_attempts;
|
uint32_t max_login_attempts;
|
||||||
uint32_t min_record_len;
|
uint32_t min_record_len;
|
||||||
uint32_t max_record_len;
|
uint32_t max_record_len;
|
||||||
|
uint32_t max_retries;
|
||||||
switch_mutex_t *mutex;
|
switch_mutex_t *mutex;
|
||||||
uint32_t record_threshold;
|
uint32_t record_threshold;
|
||||||
uint32_t record_silence_hits;
|
uint32_t record_silence_hits;
|
||||||
@ -321,7 +322,7 @@ static switch_status_t load_config(void)
|
|||||||
switch_bool_t auto_playback_recordings = SWITCH_TRUE;
|
switch_bool_t auto_playback_recordings = SWITCH_TRUE;
|
||||||
|
|
||||||
switch_core_db_t *db;
|
switch_core_db_t *db;
|
||||||
uint32_t timeout = 10000, max_login_attempts = 3, max_record_len = 300, min_record_len = 3;
|
uint32_t timeout = 10000, max_login_attempts = 3, max_record_len = 300, min_record_len = 3, max_retries = 3;
|
||||||
|
|
||||||
db = NULL;
|
db = NULL;
|
||||||
|
|
||||||
@ -590,6 +591,16 @@ static switch_status_t load_config(void)
|
|||||||
} else {
|
} else {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid record length [%s] must be between 1 and 10000s\n", val);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid record length [%s] must be between 1 and 10000s\n", val);
|
||||||
}
|
}
|
||||||
|
} else if (!strcasecmp(var, "max-retries")) {
|
||||||
|
int tmp = 0;
|
||||||
|
if (!switch_strlen_zero(val)) {
|
||||||
|
tmp = atoi(val);
|
||||||
|
}
|
||||||
|
if (tmp > 0) {
|
||||||
|
max_retries = tmp;
|
||||||
|
} else {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid max-retires value [%s] must be higher than 0\n", val);
|
||||||
|
}
|
||||||
} else if (!strcasecmp(var, "odbc-dsn") && !switch_strlen_zero(val)) {
|
} else if (!strcasecmp(var, "odbc-dsn") && !switch_strlen_zero(val)) {
|
||||||
#ifdef SWITCH_HAVE_ODBC
|
#ifdef SWITCH_HAVE_ODBC
|
||||||
odbc_dsn = switch_core_strdup(globals.pool, val);
|
odbc_dsn = switch_core_strdup(globals.pool, val);
|
||||||
@ -721,6 +732,7 @@ static switch_status_t load_config(void)
|
|||||||
profile->max_login_attempts = max_login_attempts;
|
profile->max_login_attempts = max_login_attempts;
|
||||||
profile->min_record_len = min_record_len;
|
profile->min_record_len = min_record_len;
|
||||||
profile->max_record_len = max_record_len;
|
profile->max_record_len = max_record_len;
|
||||||
|
profile->max_retries = max_retries;
|
||||||
*profile->terminator_key = *terminator_key;
|
*profile->terminator_key = *terminator_key;
|
||||||
*profile->play_new_messages_key = *play_new_messages_key;
|
*profile->play_new_messages_key = *play_new_messages_key;
|
||||||
*profile->play_saved_messages_key = *play_saved_messages_key;
|
*profile->play_saved_messages_key = *play_saved_messages_key;
|
||||||
@ -1051,7 +1063,7 @@ static switch_status_t create_file(switch_core_session_t *session, vm_profile_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (switch_channel_ready(channel)) {
|
while (switch_channel_ready(channel)) {
|
||||||
|
uint32_t counter = 0;
|
||||||
switch_snprintf(key_buf, sizeof(key_buf), "%s:%s:%s", profile->listen_file_key, profile->save_file_key, profile->record_file_key);
|
switch_snprintf(key_buf, sizeof(key_buf), "%s:%s:%s", profile->listen_file_key, profile->save_file_key, profile->record_file_key);
|
||||||
|
|
||||||
record_file:
|
record_file:
|
||||||
@ -1082,8 +1094,9 @@ static switch_status_t create_file(switch_core_session_t *session, vm_profile_t
|
|||||||
}
|
}
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Message is less than minimum record length: %d, discarding it.\n",
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Message is less than minimum record length: %d, discarding it.\n",
|
||||||
profile->min_record_len);
|
profile->min_record_len);
|
||||||
if (switch_channel_ready(channel)) {
|
if (switch_channel_ready(channel) && counter < profile->max_retries) {
|
||||||
TRY_CODE(switch_ivr_phrase_macro(session, VM_ACK_MACRO, "too-small", NULL, NULL));
|
TRY_CODE(switch_ivr_phrase_macro(session, VM_ACK_MACRO, "too-small", NULL, NULL));
|
||||||
|
counter++;
|
||||||
goto record_file;
|
goto record_file;
|
||||||
} else {
|
} else {
|
||||||
status = SWITCH_STATUS_NOTFOUND;
|
status = SWITCH_STATUS_NOTFOUND;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user