diff --git a/apps/app_dial.c b/apps/app_dial.c index 54936d5..6bbabac 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -595,6 +595,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, ast_poll_channel_add(in, epollo->chan); #endif + ast_set_flag(in, AST_FLAG_END_DTMF_ONLY); while (*to && !peer) { struct chanlist *o; int pos = 0; /* how many channels do we handle */ @@ -622,6 +623,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, ast_verb(3, "No one is available to answer at this time (%d:%d/%d/%d)\n", numlines, num.busy, num.congestion, num.nochan); } *to = 0; + ast_clear_flag(in, AST_FLAG_END_DTMF_ONLY); return NULL; } winner = ast_waitfor_n(watchers, pos, to); @@ -805,6 +807,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, } ast_frfree(f); } + ast_clear_flag(in, AST_FLAG_END_DTMF_ONLY); return NULL; } @@ -823,6 +826,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, strcpy(pa->status, "CANCEL"); ast_frfree(f); ast_channel_unlock(in); + ast_clear_flag(in, AST_FLAG_END_DTMF_ONLY); return NULL; } ast_channel_unlock(in); @@ -835,6 +839,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, strcpy(pa->status, "CANCEL"); ast_cdr_noanswer(in->cdr); ast_frfree(f); + ast_clear_flag(in, AST_FLAG_END_DTMF_ONLY); return NULL; } } @@ -863,6 +868,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, if (!*to || ast_check_hangup(in)) ast_cdr_noanswer(in->cdr); } + ast_clear_flag(in, AST_FLAG_END_DTMF_ONLY); #ifdef HAVE_EPOLL for (epollo = outgoing; epollo; epollo = epollo->next) {