diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c index 3caba49170daa6154222bac704c0fe4948e27b1f..be8fa3fc197d9b8ff97a8b43a6b12d63bb6e3b8a 100644 --- a/channels/chan_brcm.c +++ b/channels/chan_brcm.c @@ -673,6 +673,10 @@ static int brcm_indicate(struct ast_channel *ast, int condition, const void *dat } } } + sub->conference_initiator = 0; + free(sub->conference_id); + sub->conference_id = NULL; + res = 0; } } @@ -2113,32 +2117,6 @@ void handle_dtmf_calling(struct brcm_subchannel *sub) } } -// Hangup ALL brcm lines currently ringing with busy casue. -static int brcm_busy_all_ringers(void) -{ - struct brcm_pvt *pvt; - int i; - - brcm_lock_pvts(); - pvt = iflist; - - while(pvt) { - for (i=0; i<NUM_SUBCHANNELS; i++) { - if (pvt->sub[i] && pvt->sub[i]->owner && pvt->sub[i]->channel_state == RINGING) { - ast_debug(4, "Hangup BUSY on %s\n", ast_channel_name(pvt->sub[i]->owner)); - ast_queue_control(pvt->sub[i]->owner, AST_CONTROL_BUSY); - ast_queue_hangup_with_cause(pvt->sub[i]->owner, AST_CAUSE_USER_BUSY); - } - } - - pvt = brcm_get_next_pvt(pvt); - } - - brcm_unlock_pvts(); - - return 0; -} - static void handle_Rnumber_etsi(struct brcm_subchannel *sub, struct brcm_subchannel *sub_peer, struct ast_channel *owner, struct ast_channel *peer_owner) { @@ -2159,7 +2137,6 @@ static void handle_Rnumber_etsi(struct brcm_subchannel *sub, struct brcm_subchan sub_peer->cw_timer_id = -1; ast_queue_control(peer_owner, AST_CONTROL_BUSY); - brcm_busy_all_ringers(); ast_indicate(owner, AST_CONTROL_UNHOLD); } else if (sub->channel_state == INCALL && sub_peer->channel_state == ONHOLD) { ast_debug(2, "Hanging up call on hold\n");