]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_dial: Fix progress timeout calculation with no answer timeout.
authorNaveen Albert <asterisk@phreaknet.org>
Wed, 16 Oct 2024 21:46:42 +0000 (17:46 -0400)
committerAsterisk Development Team <asteriskteam@digium.com>
Thu, 14 Nov 2024 20:00:45 +0000 (20:00 +0000)
If to_answer is -1, simply comparing to see if the progress timeout
is smaller than the answer timeout to prefer it will fail. Add
an additional check that chooses the progress timeout if there is
no answer timeout (or as before, if the progress timeout is smaller).

Resolves: #821
(cherry picked from commit 485ccb74297ead4b92769b41b8bce0f8c2d7790b)

apps/app_dial.c

index 3861787b899a6335e67c0fb2f3f6ab20f22c71c9..f78c97d57f55815944512f0551b6084113e351dd 100644 (file)
@@ -1349,7 +1349,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
                }
 
                /* If progress timeout is active, use that if it's the shorter of the 2 timeouts. */
-               winner = ast_waitfor_n(watchers, pos, *to_progress > 0 && *to_progress < *to_answer ? to_progress : to_answer);
+               winner = ast_waitfor_n(watchers, pos, *to_progress > 0 && (*to_answer < 0 || *to_progress < *to_answer) ? to_progress : to_answer);
 
                AST_LIST_TRAVERSE(out_chans, o, node) {
                        int res = 0;