diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c index d54a7720c120de48826eb25684bcbed2993422b0..19eecd8476504ec5d19433a606d8655aa78c7273 100644 --- a/channels/chan_brcm.c +++ b/channels/chan_brcm.c @@ -1950,7 +1950,7 @@ void handle_dtmf(enum LINE_EVENT event, if (p->dtmf_first < 0) { p->dtmf_first = dtmf_button; ast_debug(9,"Pressed DTMF %s\n", dtmfMap->name); - if (owner && sub->channel_state == INCALL) { + if (owner && sub->channel_state == INCALL && !p->hf_detected) { // INCALL send_outgoing_dtmf(sub, owner, dtmf_button, AST_FRAME_DTMF_BEGIN); } @@ -1964,11 +1964,11 @@ void handle_dtmf(enum LINE_EVENT event, if (p->hf_detected) { ast_debug(2, "DTMF after HF\n"); p->hf_detected = 0; - /* HF while not in a call doesn't make sense */ if (sub->channel_state == INCALL && (brcm_in_callwaiting(p) || brcm_in_onhold(p) || brcm_in_conference(p))) { handle_hookflash(sub, sub_peer, owner, peer_owner); } else { + /* HF while not in a call doesn't make sense */ ast_debug(2, "DTMF after HF while not in call. \ state: %d, \ callwaiting: %d, \