From 7d414983c9ddfa9cf8300d5d9aee7a86876b7ea7 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sat, 28 Nov 2015 10:54:10 +0100 Subject: [PATCH] perform default/timeout action when sending is complete --- action.cpp | 1 + route.c | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/action.cpp b/action.cpp index db8e101..5b332c9 100644 --- a/action.cpp +++ b/action.cpp @@ -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 */ diff --git a/route.c b/route.c index ce8dcf6..925bfe8 100644 --- a/route.c +++ b/route.c @@ -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; -- 2.13.6