diff options
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 |