From 3abaf28d74f2acb3dfccfb698d62a79f2f6058a3 Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Mon, 9 Jun 2008 16:37:36 +0000 Subject: [PATCH] Merged revisions 121282 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ................ r121282 | russell | 2008-06-09 11:37:08 -0500 (Mon, 09 Jun 2008) | 18 lines Merged revisions 121280 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r121280 | russell | 2008-06-09 11:35:40 -0500 (Mon, 09 Jun 2008) | 10 lines Do not attempt to do emulation if an END digit is received and the length is less than the defined minimum digit length, and the other end only wants END digits (SIP INFO, for example). (closes issue #12778) Reported by: tsearle Patches: 12778.rev1.txt uploaded by russell (license 2) Tested by: tsearle ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@121283 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/channel.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/main/channel.c b/main/channel.c index a6f353d2e3..21d6b6f6e8 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2538,7 +2538,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; @@ -2547,6 +2547,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) {