diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c index d5aeb9440457fbad33db6929d2aee1da560cd98a..5f2b7a7d15171f1101f6f3d857d1e3c16a45b58c 100644 --- a/channels/chan_brcm.c +++ b/channels/chan_brcm.c @@ -598,6 +598,7 @@ static int brcm_indicate(struct ast_channel *ast, int condition, const void *dat case AST_CAUSE_USER_BUSY: if (ast_channel_state(ast) != AST_STATE_UP) { /* XXX We should play a busy tone here!! */ + sub->channel_state = CALLENDED; endpt_signal(sub->parent->line_id, "busy", "on", NULL); break; } @@ -1028,6 +1029,7 @@ static int brcm_answer(struct ast_channel *ast) * Treated like a normal call but we want to preserve the channel_state */ if(pvt->dialtone != DIALTONE_HOWLER) { + if(sub->channel_state != CALLENDED)/*Dont change the channel state if call is terminated */ sub->channel_state = INCALL; } //send_ubus_event("RINGING_OFF",pvt->line_id);