From 64f9df5e595bcc4560759eb9678ce232052fe16a Mon Sep 17 00:00:00 2001 From: Naveen Albert Date: Sun, 28 Jan 2024 08:57:47 -0500 Subject: [PATCH] app_if: Fix next priority calculation. Commit fa3922a4d28860d415614347d9f06c233d2beb07 fixed a branching issue but "overshoots" when calculating the next priority. This fixes that; accompanying test suite tests have also been extended. Resolves: #560 --- apps/app_if.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/app_if.c b/apps/app_if.c index 94bb1f1273..81eda70224 100644 --- a/apps/app_if.c +++ b/apps/app_if.c @@ -286,9 +286,11 @@ static int if_helper(struct ast_channel *chan, const char *data, int end) snprintf(end_varname,sizeof(end_varname),"END_%s",varname); ast_channel_lock(chan); /* For EndIf, simply go to the next priority. + * We do not add 1 to ast_channel_priority because the dialplan will + * auto-increment the priority when we return, so just keep the priority as is. * For ExitIf or false If() condition, we need to find the end of the current * If branch (at same indentation) and branch there. */ - endifpri = end == 2 ? ast_channel_priority(chan) + 1 : find_matching_endif(chan, NULL); + endifpri = end == 2 ? ast_channel_priority(chan) : find_matching_endif(chan, NULL); if ((goto_str = pbx_builtin_getvar_helper(chan, end_varname))) { ast_parseable_goto(chan, goto_str); pbx_builtin_setvar_helper(chan, end_varname, NULL);