app_if: Fix next priority calculation.
Commitfa3922a4d2
fixed a branching issue but "overshoots" when calculating the next priority. This fixes that; accompanying test suite tests have also been extended. Resolves: #560 (cherry picked from commitaa5b9d1d9f
)
This commit is contained in:
parent
080602c6a1
commit
c1a495002f
|
@ -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);
|
snprintf(end_varname,sizeof(end_varname),"END_%s",varname);
|
||||||
ast_channel_lock(chan);
|
ast_channel_lock(chan);
|
||||||
/* For EndIf, simply go to the next priority.
|
/* 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
|
* For ExitIf or false If() condition, we need to find the end of the current
|
||||||
* If branch (at same indentation) and branch there. */
|
* 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))) {
|
if ((goto_str = pbx_builtin_getvar_helper(chan, end_varname))) {
|
||||||
ast_parseable_goto(chan, goto_str);
|
ast_parseable_goto(chan, goto_str);
|
||||||
pbx_builtin_setvar_helper(chan, end_varname, NULL);
|
pbx_builtin_setvar_helper(chan, end_varname, NULL);
|
||||||
|
|
Loading…
Reference in New Issue