diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c index 6f9a2b369d920a7fd79651d73fe8cd434b35413b..bca823c4ab8d3af851b21e3d8f2de85089da3a46 100644 --- a/channels/chan_brcm.c +++ b/channels/chan_brcm.c @@ -645,6 +645,9 @@ static int brcm_indicate(struct ast_channel *ast, int condition, const void *dat break; } res = -1; + case AST_CAUSE_NETWORK_OUT_OF_ORDER: + brcm_stop_dialtone(sub->parent); // stop any dialtone exist if disconnection happened due to network/server + break; default: ast_debug(1, "Don't know how to handle cause code %d\n", ast_cause); break; @@ -1408,9 +1411,7 @@ static int brcm_signal_dialtone(struct brcm_pvt *p) { ast_verbose("Setting dialtone to %s\n", dialtone_map[p->dialtone].str); switch (p->dialtone) { case DIALTONE_OFF: - endpt_signal(p->line_id, "dial", "off", NULL); - endpt_signal(p->line_id, "stutter", "off", NULL); - endpt_signal(p->line_id, "unobtainable", "off", NULL); + endpt_signal(p->line_id, "dial", "off", NULL); // this will turn off any tones that is playing. Act as play dial-off. break; case DIALTONE_ON: endpt_signal(p->line_id, "dial", "on", NULL);