diff --git a/main/channel.c b/main/channel.c index 8db899747f..95293d6614 100644 --- a/main/channel.c +++ b/main/channel.c @@ -3648,7 +3648,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 @@ -3828,8 +3831,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; } }