diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c index 98685ac1e913058ec3eda8c4ca1ba08214c870eb..315832d79e1a7f4aa139a96f3dc6036e37b059d9 100644 --- a/channels/chan_brcm.c +++ b/channels/chan_brcm.c @@ -1015,14 +1015,21 @@ static int brcm_call(struct ast_channel *chan, const char *dest, int timeout) p->tech->signal_ringing_callerid_pending(p); p->tech->signal_callerid(chan, sub); } + if (has_call_in_sip_client(p->context)) { sub->cw_timer_id = ast_sched_add(sched, cwtimeout*1000, cwtimeout_cb, sub); - ast_setstate(chan, AST_STATE_RINGING_CW); - ast_queue_control(chan, AST_CONTROL_RINGING_CW); + if (is_call_waiting_enabled(p->context)) { + ast_setstate(chan, AST_STATE_RINGING_CW); + ast_queue_control(chan, AST_CONTROL_RINGING_CW); + } else { + ast_setstate(chan, AST_STATE_RINGING); + ast_queue_control(chan, AST_CONTROL_RINGING); + } } else { ast_setstate(chan, AST_STATE_RINGING); ast_queue_control(chan, AST_CONTROL_RINGING); } + brcm_send_ubus_event("RINGING",p->line_id); } //ast_mutex_unlock(&sub->parent->lock);