diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c
index fadbd81769c0c3253c3178c8a5c33a6192fd5189..c0bf0462c569d12fc192db2f5f0b21ef4185079d 100644
--- a/channels/chan_brcm.c
+++ b/channels/chan_brcm.c
@@ -901,8 +901,13 @@ static int brcm_hangup(struct ast_channel *ast)
 	 * isn't called again when going on-hook
 	 */
 	if(p->dialtone != DIALTONE_HOWLER && sub->channel_state != ONHOOK) {
-		sub->channel_state = CALLENDED;
-		ast_debug(6, "Setting channel state to %s\n", state2str(sub->channel_state));
+	        ast_debug(6, "Setting channel state to %s\n", state2str(sub->channel_state));
+               /*In case the call ends before connecting ,move the party to ONHOOK state Since its already on ONHOOK ,
+                we never get on ONHOOK event again*/
+               if (sub->channel_state == RINGING)
+                    sub->channel_state = ONHOOK;
+               else
+		    sub->channel_state = CALLENDED;
 	}
 
 	if ( sub->conference_initiator && brcm_in_conference(p)) {