Index: main/channel.c =================================================================== --- main/channel.c (revision 120781) +++ main/channel.c (working copy) @@ -2168,7 +2168,7 @@ 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 @@ 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) {