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");