diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c index 5a59a9b4cbe8fc9bfb63612da0ada223ca5042d9..303868295b9b76856146026d2780ac7d1cc13b4b 100644 --- a/channels/chan_brcm.c +++ b/channels/chan_brcm.c @@ -2005,6 +2005,7 @@ static int handle_dialtone_timeout(const void *data) case DIALTONE_SPECIAL_CONDITION: case DIALTONE_CONGESTION: case DIALTONE_MWI_OFF: + // Include all 4 dial tones available for asterisk.set1.mwi_dialtone_state p->dialtone = DIALTONE_UNOBTAINABLE; p->dialtone_timeout_timer_id = ast_sched_add(sched, s->offhook_nu_timeoutmsec, handle_dialtone_timeout, p); break; @@ -2364,6 +2365,10 @@ static void handle_hookflash(struct brcm_subchannel *sub, struct brcm_subchannel p->hf_detected = 0; return; } + } else if (sub->channel_state == CALLING && sub_peer->channel_state != ONHOLD){ + //ignore the flash hook sending from endptmngr for DECT when got 183 from IVR system and interacting through DTMF + p->hf_detected = 0; + return; } if (p->dtmf_first < 0) {