diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c index 5f2b7a7d15171f1101f6f3d857d1e3c16a45b58c..037690361c4e1e3f0877fa946e60a9c3d0a03d32 100644 --- a/channels/chan_brcm.c +++ b/channels/chan_brcm.c @@ -1763,13 +1763,28 @@ void handle_dtmf_calling(struct brcm_subchannel *sub) } - else if (ast_exists_extension(NULL, p->context, p->dtmfbuf, 1, p->cid_num) && dtmfbuf_len > 2 && dtmf_last_char == termination_digit + else if (ast_exists_extension(NULL, p->context, p->dtmfbuf, 1, p->cid_num) && dtmf_last_char == termination_digit && dtmf_one_before_last_char != 0x2A && feature_access_code_match(p->dtmfbuf) != 1) { + if(line_config[p->line_id].minimumnumberdigits) + { + //Minimum dtmf limit is checked before starting a call.If limit is not reached,ignore + //We have a match in the "normal" context, and user ended the dialling sequence with a # or temination digit set in dialplan, + //so have asterisk place a call immediately if sequence is not partially matching a feature access code + ast_log(LOG_NOTICE, "Termination key %c pressed during dialling, extension %s found\n",termination_digit, p->dtmfbuf); + if(strlen(p->dtmfbuf) >= line_config[p->line_id].minimumnumberdigits) + brcm_start_calling(p, sub, p->context); + else + ast_log(LOG_ERROR, "Not reached the minimum digits to start a call!! \n"); + } + else + { + //No minimum limit, Start calling if we encounter a terminatingdigit + //We have a match in the "normal" context, and user ended the dialling sequence with a # or temination digit set in dialplan, + //so have asterisk place a call immediately if sequence is not partially matching a feature access code + ast_log(LOG_NOTICE, "No minimum digit limit set start a call right away \n"); + brcm_start_calling(p, sub, p->context); + } - //We have a match in the "normal" context, and user ended the dialling sequence with a #, - //so have asterisk place a call immediately if sequence is not partially matching a feature access code - ast_debug(9, "Termination key %c pressed during dialling, extension %s found\n",termination_digit, p->dtmfbuf); - brcm_start_calling(p, sub, p->context); } else if (ast_exists_extension(NULL, p->context, p->dtmfbuf, 1, p->cid_num) && !ast_matchmore_extension(NULL, p->context, p->dtmfbuf, 1, p->cid_num)) {