diff --git a/main/channel.c b/main/channel.c index ace4a41e5a337016368142d38f1419664ae81754..a1fc401d38f0038195247c31930fc59794b3df9b 100644 --- a/main/channel.c +++ b/main/channel.c @@ -3658,7 +3658,10 @@ static enum ast_bridge_result ast_generic_bridge(struct ast_channel *c0, struct if (bridge_end.tv_sec) { to = ast_tvdiff_ms(bridge_end, ast_tvnow()); if (to <= 0) { - res = AST_BRIDGE_COMPLETE; + if (config->timelimit) + res = AST_BRIDGE_RETRY; + else + res = AST_BRIDGE_COMPLETE; break; } } else @@ -3851,8 +3854,11 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha now = ast_tvnow(); to = ast_tvdiff_ms(nexteventts, now); if (to <= 0) { - res = AST_BRIDGE_COMPLETE; - break; + if (!config->timelimit) { + res = AST_BRIDGE_COMPLETE; + break; + } + to = 0; } }