perform default/timeout action when sending is complete

This commit is contained in:
Andreas Eversberg 2015-11-28 10:54:10 +01:00
parent 6cae175d72
commit 7d414983c9
2 changed files with 4 additions and 2 deletions

View File

@ -1587,6 +1587,7 @@ void EndpointAppPBX::_action_goto_menu(int mode)
/* if the 'menu' was selected, we will flush all digits */
if (mode) {
e_dialinginfo.id[0] = 0;
e_dialinginfo.sending_complete = 0;
e_extdialing = e_dialinginfo.id;
} else {
/* remove digits that are required to match the rule */

View File

@ -2392,7 +2392,7 @@ struct route_action *EndpointAppPBX::route(struct route_ruleset *ruleset)
/* we must have greater or equal length to values */
if ((unsigned long)strlen(string) < comp_len) {
/* special case for unfinished dialing */
if (cond->match == MATCH_DIALING) {
if (cond->match == MATCH_DIALING && !e_dialinginfo.sending_complete) {
couldbetrue = 1; /* could match */
comp_len = strlen(string);
} else {
@ -2466,7 +2466,8 @@ struct route_action *EndpointAppPBX::route(struct route_ruleset *ruleset)
cond = cond->next;
}
if (timeout>now_ll && match==1) { /* the matching rule with timeout in the future */
/* if sending complete, we use future match now, since waiting does not make sense anymore */
if (timeout>now_ll && match==1 && !e_dialinginfo.sending_complete) { /* the matching rule with timeout in the future */
if (match_timeout == 0 || timeout < match_timeout) { /* first timeout or lower */
/* set timeout in the furture */
match_timeout = timeout;