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)
}
/* 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;