From: Naveen Albert Date: Wed, 16 Oct 2024 21:46:42 +0000 (-0400) Subject: app_dial: Fix progress timeout calculation with no answer timeout. X-Git-Tag: 21.6.0-rc1~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b31ced9948feabf3883d5ed12e45d2ca3df059d;p=thirdparty%2Fasterisk.git app_dial: Fix progress timeout calculation with no answer timeout. 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 6a07e8e0f11a088c1c74fa2f2b1f855d671c2765) --- diff --git a/apps/app_dial.c b/apps/app_dial.c index 252539d615..dec9284dd4 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -1292,7 +1292,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;