diff options
-rw-r--r-- | main/channel.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/main/channel.c b/main/channel.c index 392b0b113..cafbfe9c5 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2168,7 +2168,7 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) ast_log(LOG_DTMF, "DTMF end accepted without begin '%c' on %s\n", f->subclass, chan->name); f->len = AST_MIN_DTMF_DURATION; } - if (f->len < AST_MIN_DTMF_DURATION) { + if (f->len < AST_MIN_DTMF_DURATION && !ast_test_flag(chan, AST_FLAG_END_DTMF_ONLY)) { ast_log(LOG_DTMF, "DTMF end '%c' has duration %ld but want minimum %d, emulating on %s\n", f->subclass, f->len, AST_MIN_DTMF_DURATION, chan->name); ast_set_flag(chan, AST_FLAG_EMULATE_DTMF); chan->emulate_dtmf_digit = f->subclass; @@ -2177,6 +2177,9 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) f = &ast_null_frame; } else { ast_log(LOG_DTMF, "DTMF end passthrough '%c' on %s\n", f->subclass, chan->name); + if (f->len < AST_MIN_DTMF_DURATION) { + f->len = AST_MIN_DTMF_DURATION; + } chan->dtmf_tv = now; } if (chan->audiohooks) { |