aboutsummaryrefslogtreecommitdiffstats
path: root/main/features.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/features.c')
-rw-r--r--main/features.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/main/features.c b/main/features.c
index 9f59497d7..4ced238a2 100644
--- a/main/features.c
+++ b/main/features.c
@@ -2464,6 +2464,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