From 08bdc61deb2e8f8a5dc9fc129913cf1e55248d8f Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Fri, 2 Sep 2011 10:01:07 +0200 Subject: Fixed broken timeout condition A given timeout condition never made the rule match. --- route.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'route.c') diff --git a/route.c b/route.c index c1bf079..3caed2b 100644 --- a/route.c +++ b/route.c @@ -2313,12 +2313,13 @@ 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 (match_timeout == 0 || timeout < match_timeout) { /* first timeout or lower */ - /* set timeout in the furture */ - match_timeout = timeout; - e_match_to_action = rule->action_first; - e_match_to_extdialing = e_dialinginfo.id + dialing_required; + if (timeout>now_ll && match==1) { /* 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; + e_match_to_action = rule->action_first; + e_match_to_extdialing = e_dialinginfo.id + dialing_required; + } match = 0; /* matches in the future */ } if (match == 1) { @@ -2338,7 +2339,7 @@ struct route_action *EndpointAppPBX::route(struct route_ruleset *ruleset) if (match_timeout == 0) unsched_timer(&e_match_timeout); /* no timeout */ else { - schedule_timer(&e_match_timeout, match_timeout / 1000000, match_timeout % 1000000); + schedule_timer(&e_match_timeout, (match_timeout-now_ll) / 1000000, (match_timeout-now_ll) % 1000000); } return(action); } -- cgit v1.2.3-55-g7522