From baab0732191318ebd7c2c5aa1bac71b57863b721 Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Mon, 23 Apr 2007 17:57:32 +0000 Subject: [PATCH] Ensure that digits passing through Asterisk have a reasonable minimum length. It is currently 100 ms. If someone thinks this should be different, feel free to speak up. (related to issues #8944, #9250, and #9348) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@61763 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/channel.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/main/channel.c b/main/channel.c index 4f0b58536b..f0215851b6 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2268,7 +2268,7 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) ast_set_flag(chan, AST_FLAG_EMULATE_DTMF); chan->emulate_dtmf_digit = f->subclass; chan->dtmf_begin_tv = ast_tvnow(); - if (f->len) + if (f->len && f->len > AST_DEFAULT_EMULATE_DTMF_DURATION) chan->emulate_dtmf_duration = f->len; else chan->emulate_dtmf_duration = AST_DEFAULT_EMULATE_DTMF_DURATION; @@ -2276,6 +2276,12 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio) ast_clear_flag(chan, AST_FLAG_IN_DTMF); if (!f->len) f->len = ast_tvdiff_ms(ast_tvnow(), chan->dtmf_begin_tv); + if (f->len < AST_DEFAULT_EMULATE_DTMF_DURATION) { + ast_set_flag(chan, AST_FLAG_EMULATE_DTMF); + chan->emulate_dtmf_digit = f->subclass; + chan->emulate_dtmf_duration = AST_DEFAULT_EMULATE_DTMF_DURATION - f->len; + f = &ast_null_frame; + } } break; case AST_FRAME_DTMF_BEGIN: