diff options
author | jpeeler <jpeeler@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-02-17 22:14:38 +0000 |
---|---|---|
committer | jpeeler <jpeeler@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-02-17 22:14:38 +0000 |
commit | 62b2e53625be7a0f90d0328aff129e63938b38ca (patch) | |
tree | e791a1a22861701e7308e4dc4da38271fa651ebe /main/features.c | |
parent | e081717c3c5031474e1d95120f15e842cf9649a6 (diff) |
Merged revisions 176708 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r176708 | jpeeler | 2009-02-17 16:08:00 -0600 (Tue, 17 Feb 2009) | 23 lines
Merged revisions 176701 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r176701 | jpeeler | 2009-02-17 15:54:34 -0600 (Tue, 17 Feb 2009) | 17 lines
Modify bridging to properly evaluate DTMF after first warning is played
The main problem is currently if the Dial flag L is used with a warning sound,
DTMF is not evaluated after the first warning sound. To fix this, a flag has
been added in ast_generic_bridge for playing the warning which ensures that if
a scheduled warning is missed, multiple warrnings are not played back (due to a
feature evaluation or waiting for digits). ast_channel_bridge was modified to
store the nexteventts in the ast_bridge_config structure as that information
was lost every time ast_channel_bridge was reentered, causing a hangup due to
incorrect time calculations.
(closes issue #14315)
Reported by: tim_ringenbach
Reviewed on reviewboard:
http://reviewboard.digium.com/r/163/
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@176710 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/features.c')
-rw-r--r-- | main/features.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/main/features.c b/main/features.c index d1dfcba7f..9ae81865e 100644 --- a/main/features.c +++ b/main/features.c @@ -2267,6 +2267,15 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast if (config->feature_timer) { /* Update time limit for next pass */ diff = ast_tvdiff_ms(ast_tvnow(), config->start_time); + if (res == AST_BRIDGE_RETRY) { + /* The feature fully timed out but has not been updated. Skip + * the potential round error from the diff calculation and + * explicitly set to expired. */ + config->feature_timer = -1; + } else { + config->feature_timer -= diff; + } + config->feature_timer -= diff; if (hasfeatures) { /* Running on backup config, meaning a feature might be being |